[Solved] Dynamisches Mehrdimensionales Array

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Bullyx.

    [Solved] Dynamisches Mehrdimensionales Array

    Hallo Leute,

    ich möchte gerne aus der Zwischenablage einen Text in eine mehrdimensionales Array speichern und verarbeiten. Verarbeiten heißt in dem Fall, Werte vergleichen, auswerten und in eine Excel Tabelle eintragen.
    Der Text besteht aus einem Bezeichner und Werten. All diese werden per Tab getrennt und der jeweilige Eintrag per Zeilenumbruch abgeschlossen.

    Bis jetzt liest mein Script den Zwischenspeicher aus und erstellt ein einfaches Array mit den Zeilen. Der letzte Eintrag wird gelöscht, da dieser nicht gebraucht wird.

    Visual Basic-Quellcode

    1. Dim tmp As String
    2. Dim arrL() As String
    3. tmp = GetClipboard()
    4. arrL = Split(tmp, vbNewLine)
    5. ReDim Preserve arrL(UBound(arrL) - 1)


    Nun möchte ich aber die Werte in eine Zweite "Array Schicht" speichern.

    Quellcode

    1. Index [0]
    2. Index [0] -> Bezeichnung, [1] -> Wert 1, [2] -> Wert 2, ... , [15] -> Wert 15
    3. Index [1]
    4. Index [0] -> Bezeichnung, [1] -> Wert 1, [2] -> Wert 2, ... , [15] -> Wert 15


    Wie stelle ich das am besten an?

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Bullyx“ ()

    Die Quelle ist ein Analyse Programm bei dem ich nur mit der Zwischenablage auf dessen Daten zugreifen kann. Direkt exportieren geht dort leider auch nicht.
    Auch sollen nicht alle Werte eingetragen werden, sondern nur die welche eine bestimmte Toleranzgrenze nicht überschreiten. Ebenso sollen bei bestimmten Werten weitere Eintragungen in eine zweite Tabelle erfolgen.
    Hallo Bullyx,
    dein Ansatz ist schon mal richtig. Du musst jetzt jeden
    Arrayeintrag zerlegen und per Schleife in ein weiteres
    Array einfügen. Probier' mal dies:

    Visual Basic-Quellcode

    1. Dim tmp As String
    2. Dim arrL() As String
    3. tmp = GetClipboard()
    4. arrL = Split(tmp, vbNewLine)
    5. ReDim Preserve arrL(UBound(arrL) - 1)
    6. Dim i As Long, j As Long
    7. Dim Arr2() As String, Arr3() As String
    8. Arr2 = Split(arrL(0), vbTab)
    9. ReDim Arr3(UBound(arrL), UBound(Arr2))
    10. For i = 0 To UBound(arrL)
    11. Arr2 = Split(arrL(i), vbTab)
    12. For j = 0 To UBound(Arr2)
    13. Arr3(i, j) = Arr2(j)
    14. Next j
    15. Next i

    Ich gehe davon aus, dass jede Zeile die selbe Anzahl von
    Elementen hat, wenn nicht kann man den Code noch anpassen.
    Gruss,

    Neptun