Arrays und Split-Befehle zum erstellen einer 2-dimensionalen array
Ich habe einige Schwierigkeiten füllen ein array mit einem split-Befehl.
Den string den ich derzeit habe, ist unten
MyString = "Row1 Column1[~]Row1 Column2[~]Row1 Column3" & vbNewLine & _
"Row2 Column1[~]Row2 Column2[~]Row2 Column3" & vbNewLine & _
"Row3 Column1[~]Row3 Column2[~]Row3 Column3" & vbNewLine & _
"Row4 Column1[~]Row4 Column2[~]Row4 Column3"
Ich habe ein array, ich will multi-dimensional und möchte jede Zeile, Spalte##, um in den richtigen Teil der Reihe basiert auf dessen Nummer.
Beispielsweise
MyArray(1,1) = "Row1 Column1"
MyArray(2,1) = "Row2 Column1"
MyArray(3,1) = "Row3 Column1"
MyArray(4,1) = "Row4 Column1"
MyArray(1,2) = "Row1 Column2"
MyArray(2,2) = "Row2 Column2"
MyArray(3,2) = "Row3 Column2"
MyArray(4,2) = "Row4 Column2"
MyArray(1,3) = "Row1 Column3"
MyArray(2,3) = "Row2 Column3"
MyArray(3,3) = "Row3 Column3"
MyArray(4,3) = "Row4 Column3"
Jetzt verstehe ich, wie Sie füllen ein eindimensionales array mit der split-Befehl
MyArray = Split(MyString, vbNewLine)
Dies würde bedeuten, dass
MyArray(1) = "Row1 Column1[~]Row1 Column2[~]Row1 Column3"
MyArray(2) = "Row2 Column1[~]Row2 Column2[~]Row2 Column3"
MyArray(3) = "Row3 Column1[~]Row3 Column2[~]Row3 Column3"
MyArray(4) = "Row4 Column1[~]Row4 Column2[~]Row4 Column3"
Aber ich weiß nicht, wie die Verwendung einer split-Befehl zum füllen der zweiten dimension.
Ist dies möglich und wenn wie?
Wenn es nicht möglich ist, kann jeder jeden schlagen, wie eigentlich diese bevölkern?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden, Split() auf etwas anderes als ein String oder ein Variant-Wert mit einem String. Wenn Sie möchten, erzeugen ein zweidimensionales string-array, haben Sie eine Iteration durch das array zurückgegeben von Split(), und führen Sie Split() auf jeder saite. Die folgende Funktion sollte das tun, was Sie wollen:
Beispiel:
Hier ist ein schneller hack, der nur swaps von 1D-und 2D-arrays mit keine Schleifen:
For Each
auf ein 2D-array ist die Reihenfolge der Elemente eingeschleift werden. Beide arrays insgesamt Größen übereinstimmen muss, zu oder Risiko-AV auf tear-down. All diese Einschränkungen werden kompensiert durch das fehlen jeglicher Schleifen und kein string zu kopieren.Hier ist ein weiterer Ansatz, basierend auf dem Typ Variant, der die Fähigkeit enthält ein array. Statt eine 2D-Arrays haben wir ein array von arrays."
Den bonus hier ist "ragged arrays", wo jede Zeile kann eine andere Anzahl von Spalten.