Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Werte im Array durch 1000 teilen

Werte im Array durch 1000 teilen
05.01.2023 07:53:05
Thomas
Hallo,
ich lese Werte aus einer Tabellenzeile in ein Array ein und würde dabei gerne jeden zweiten Wert durch 1000 teilen, wie kann ich das machen?
Aktuell lese ich die Werte so ein

Set rngBereichlj = wks.Range("AK:AK").Find(.Cells(lngRow2, 1).Value, LookIn:=xlValues, LookAt:=xlWhole)
If Not rngBereichlj Is Nothing Or Empty Then
arrPl = wks.Range(wks.Cells(rngBereichlj.Row, 9), wks.Cells(rngBereichlj.Row, 34))
Else
End If
In dem Fall sollten die Werte im Array aus Spalte 10,12,14,16 usw. durch 1000 geteilt werden,was noch sein könnte ist das einer dieser Werte=0 ist, müsste dazu dann noch etwas beachtet werden?
Danke

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte im Array durch 1000 teilen
05.01.2023 08:36:28
ChrisL
Hi

If Not rngBereichlj Is Nothing Or Empty Then
arrPl = wks.Range(wks.Cells(rngBereichlj.Row, 9), wks.Cells(rngBereichlj.Row, 34))
For i = 2 To UBound(Application.Transpose(arrPl)) Step 2
If arrPl(1, i) = 0 Then
arrPl(1, i) = "Ausnahme"
Else
arrPl(1, i) = arrPl(1, i) / 1000
End If
Next i
Else
cu
Chris
AW: Werte im Array durch 1000 teilen
05.01.2023 10:54:07
Thomas
Hallo Chris,
ich hab die For Schleife etwas geändert, scheint aber so zu funktionieren, danke für den Tip

For i = 2 To UBound(Application.Transpose(arrPl)) Step 2
If arrPl(1, i)  0 Then
arrPl(1, i) = arrPl(1, i) / 1000
Else
arrPl(1, i) = 0
End If
Next i
Was mir aber noch nicht ganz klar ist, wofür ist das Transpose notwendig?
Danke
MFG
Thomas
Anzeige
Wieso Else?
05.01.2023 11:18:23
UweD
Hallo
If Then; Else brauchst du doch nicht.
Falls der Wert 0 ist, ist 0/1000 auch 0
Transponiert:
Aus Zeilen werden Spalten bzw. umgekehrt.
LG UweD
AW: Werte im Array durch 1000 teilen
05.01.2023 11:18:31
ChrisL
Hi
Danke für die Rückmeldung. Ich habe das Array horizontal/vertikal "gekippt", um die Länge zu erhalten. Aber wenn ich es mir nun nochmals anschaue, ist die Länge aufgrund Spalte 9-34 sowieso fix im Code enthalten.
Or Empty habe ich übersehen.
If x = "Haus" Or "Boot" Then
geht nicht, richtig wäre
If x = "Haus" Or x = "Boot" Then
Die beiden Bedingungen müssen vollständig sein.
cu
Chris
AW: Werte im Array durch 1000 teilen
05.01.2023 12:07:56
Thomas
Hi, ok du meinst also so müsste es sein

If Not rngBereichlj Is Nothing Or Not rngBereichlj Is Empty Then
und das Transponse kann ich mir sparen!?
MFG
Thomas
Anzeige
AW: Werte im Array durch 1000 teilen
05.01.2023 10:17:43
Rudi
Hallo,

If Not rngBereichlj Is Nothing Or Empty Then
wird niemals funktionieren.
Ansonsten per Schleife

for i=2 to ubound(arrpl, 2) step 2
arrpl(1, i) = arrpl(1, i)/2
next i
Gruß
Rudi
AW: Werte im Array durch 1000 teilen
05.01.2023 10:56:20
Thomas
Hallo Rudi ,
wieso kann das nicht funktionieren und wieso teilst du durch 2?
Danke
AW: Werte im Array durch 1000 teilen
05.01.2023 11:35:27
GerdL
1. Weil hinter Or kein Vergleich steht.
2. War ein Versehen.
3. Was willst du anstelle von Division durch 0 als Ergebnis haben?
Gruß Gerd
AW: Werte im Array durch 1000 teilen
05.01.2023 12:09:21
Thomas
Hallo Gerd,
bei Division durch 0 gehe ich davon aus das es einen Fehler gibt, daher würde ich wenn der Wert 0 ist, diesen auf 0 lassen.
Zu 1, stimmt, das hatte ich übersehen, Danke
Anzeige
AW: Werte im Array durch 1000 teilen
05.01.2023 14:10:57
UweD
Du teilst doch nicht durch 0 sondern durch 1000
Egal ob der Zähler null ist, gibt es keinen Fehler.
LG UweD
AW: Werte im Array durch 1000 teilen
06.01.2023 13:47:39
Thomas
Hallo Uwe,
da hast du natürlich recht, hatte da einen Denkfehler, danke für den Hinweis.
MFG
Thomas
AW: Werte im Array durch 1000 teilen
05.01.2023 11:41:03
Rudi
wieso kann das nicht funktionieren
weil die korrekte Formulierung

If Not rngBereichlj Is Nothing Or IsEmpty(rngBereichlj) Then
lautet
wieso teilst du durch 2?
weil ich nicht aufgepasst habe. ;-)
Gruß
Rudi
AW: Werte im Array durch 1000 teilen
05.01.2023 12:09:53
Thomas
Hi Rudi,
stimmt, danke für den Hinweis
AW: Werte im Array durch 1000 teilen
05.01.2023 12:00:33
Daniel
Nur die Division durch 0 ist kritisch. (Divisor = 0), das erzeugt einen Fehler.
Die 0 selbst kannst du durch andere Zahlen teilen, da kommt dann immer 0 als Ergebnis raus. (Dividend = 0)
Da du immer durch 1000 teilen willst, musst du also nichts weiter beachten, ausser vielleicht, dass du prüfen solltest, ob im Array auch wirklich Zahlen stehen

for s = 2 to ubound(arrP1, 2) step 2
For z = 1 to ubound(arrP1, 1)
If isnumeric(arrP1(z, s)) then arrP1(z, s) = arrP1(z, s) / 1000
Next
Next
Gruß Daniel
Anzeige
AW: Werte im Array durch 1000 teilen
05.01.2023 12:12:37
Thomas
Hallo Daniel,
danke für die erklärung, dann kann ich denn ELSE teil ja entfallen lassen.
Was mir grade an einer anderen stelle noch aufgefallen ist, ist das ich auch noch auf eine andere art Daten von einem Tabellenblatt in einem anderen zuordne, auch da wäre das anliegen jede zweite Zelle durch 1000 zu teilen, wie könnte ich das machen?

If bytMonate > 1 Then
With Cells(lngRowPlan2, intSpalte).Resize(1, bytMonate * 2)
.Value = tblIs.Cells(intZeile, intStartIST).Resize(1, bytMonate * 2).Value
.Interior.ColorIndex = 41
.Interior.TintAndShade = 0.5
.Locked = True '
End With
End If
Danke
MFG
Thomas
Anzeige
AW: Werte im Array durch 1000 teilen
05.01.2023 13:01:25
Thomas
Hallo nochmal,
ich hab das jetzt mal so versucht, aber obwohl mir im lokal Fenster das Array mit 22 Werten angezeigt wird, läuft die For Schleife nur einmal.....

With Cells(lngRow, intSpalte).Resize(1, bytMonate * 2)
arrTest = tbll.Cells(intZeile, intStartIST).Resize(1, bytMonate * 2).Value
For i = 2 To UBound(arrTest) Step 2
arrTest(1, i) = arrTest(1, i) / 1000
Next i
.Value = arrTest
.Interior.ColorIndex = 41
.Interior.TintAndShade = 0.5
.Locked = True
End With
End If
Wo liegt mein Fehler?
Danke
AW: Werte im Array durch 1000 teilen
05.01.2023 13:43:17
Rudi
Hallo,
For i = 2 To UBound(arrTest, 2) Step 2
Gruß
Rudi
Anzeige
AW: Werte im Array durch 1000 teilen
06.01.2023 13:48:41
Thomas
Hallo Rudi,
wieso da jetzt die 2? Die arrays machen mich noch fertig :-(
Danke
MFG
Thomas
AW: Werte im Array durch 1000 teilen
05.01.2023 15:04:11
Daniel
UBound(x, 1) : höchster Zeilenindex
UBound(x, 2) : höchster Spaltenindex
UBound(x) : höchster Zeilenindex
Gruß Daniel
AW: Werte im Array durch 1000 teilen
06.01.2023 13:49:46
Thomas
Hallo Daniel,
ah ok, danke für die Aufklärung, jetzt verstehe ich es, hoffentlich merk ich es mir auch :-)
Danke für die unterstützung.
MFG
Thomas

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige