I gelesen derzeit einen 2-dimensionalen Bereich in ein Array Excel VBA etwa so:Zählzahl der nicht-leeren Felder in Excel VB Array Säule
Set Ws = Sheet1
Ws.Activate
LastRow = Ws.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
LastCol = Ws.Cells.Find("*", searchorder:=xlByColumns, searchdirection:=xlPrevious).Column
ReDim elements(0 To LastRow - 2, 0 To LastCol - 2)
elements = Ws.Range(Cells(2, 1), Cells(LastRow, LastCol))
Bereich von 25 Zeilen mal 11 Spalten ist. Allerdings haben nicht alle Zellen im Bereich Werte, sodass einige der Werte im Array "leer" sind.
- col A hat 25 Elemente
- col B hat 16
- col K 12 hat ...
Ich muss durch diese Anordnung eine Schleife und ein zweites Array erstellen, wird die a "Kartesisches Produkt" der Werte von der ersten. Um zu bestimmen, wie oft ich eine Schleife machen muss, muss ich herausfinden, wie viele Elemente es in jeder der Array-Spalten gibt ("Dimensionen"?). Hier
ist ein Versuch, meine Schleife:
Row = 0
For i = 1 To 25 'numElements in column 1
For j = 1 To 3 'numElements in column 6
For k = 1 To 5 'numElements in column 7
For l = 1 To 14 'numElements in column 8
For m = 1 To 6 'numElements in column 10
For n = 1 To 12 'numElements in column 11
cartesian(Row, 0) = elements(i, 0)
cartesian(Row, 1) = elements(i, 1)
cartesian(Row, 2) = elements(i, 2)
cartesian(Row, 3) = elements(i, 3)
cartesian(Row, 4) = elements(i, 4)
cartesian(Row, 5) = elements(j, 5)
cartesian(Row, 6) = elements(k, 6)
cartesian(Row, 7) = elements(l, 7)
cartesian(Row, 8) = elements(l, 8)
cartesian(Row, 9) = elements(m, 9)
cartesian(Row, 10) = elements(n, 10)
Row = Row + 1
Next n
Next m
Next l
Next k
Next j
Next i
Jede Hilfe dankbar :)
EDIT 1:
Dies ist der Bereich, den ich in array1 lesen:
Austria sem jan
Belgium gdn feb
France mar
US apr
may
jun
Ich muss zählen können wie viele " Artikel "gibt es in Spalte 1, Spalte 2 und Spalte 3, um sie zu multiplizieren. Auf diese Weise werde ich wissen, wie groß ich zum zweiten Array ReDim brauche.
Dies ist, was ich in dem Array muß 2 und schließlich wieder in ein anderes Blatt schreiben:
Austria sem jan
Austria sem feb
Austria sem mar
Austria sem apr
Austria sem may
Austria sem jun
Austria gdn jan
Austria gdn feb
Austria gdn mar
Austria gdn apr
Austria gdn may
Austria gdn jun
Belgium sem jan
Belgium sem feb
Belgium sem mar
Belgium sem apr
Belgium sem may
Belgium sem jun
Belgium gdn jan
Belgium gdn feb
Belgium gdn mar
Belgium gdn apr
Belgium gdn may
Belgium gdn jun
usw.
Ich denke, das kann es überdenken. Was ist Ihr Ziel, nur die Zellen zu finden, die leer sind, in einer Reihe? Also, für die Spalten 1, 6, 7, 8, 10 und 11 wollen Sie die leeren Zellen finden? – BruceWayne
Oder Alex möchte nur die "nicht leeren" Werte der Spalten 2 bis 11 mit den Werten der Spalte 1 kombinieren? – Kellsens
Ich verstehe es auch nicht ... geht nach * kartesischem Produkt *, aber es gibt keine Berechnungen ... es ist nur eine Kopie des ersten Bereichs (nur die Werte werden gemischt). Also, wozu sind die verschiedenen Sets? jede Reihe? aber n sets liefert auch eine n-dimensionale Ausgabe ... Ich bin verwirrt:/ –