Betrifft: Teil eines mehrdimensionalen Arrays in kopieren
von: Oswald
Geschrieben am: 26.01.2010 08:19:14
Hallo und Guten Morgen,
ich möchte aus einem mehrdimensionalen Array einen Teil einer Dimension in eine Variable kopieren und diese dann z.B. an eine Funktion übergeben.
Mir fiel nur wieder eine Lösung ein:
Neues Feld auf Zielgröße setzen und Werte mit Schleife kopieren. Einfachere Lösung?
Ich habe dies bisher nirgends gefunden.
Sub A() Dim werte() ReDim werte(10) ReDim werte(10, 2) ' Hier nun z.B. das zweite Feld an eine Funktion oder Sub übergeben oder auch einfach :) ' in eine weitere Variable zur Weiterverarbeitung speichern ' Hier folgt nun der Fehler; eigentlich klar- zweiten Index erwartet. ' Wie kann ich nun einen Extrakt erstellen. MachMal werte(1) ' auch folgendes schlägt demnach fehl dim w w= werte(1) 'gewünscht hätte ich mir hier ein eindimensionales Feld mit Ubound=2 End Sub
Sub MachMal(TeilWerte)
'Verarbeitung
For i = LBound(TeilWerte) To UBound(TeilWerte)
w = TeilWerte(i)
Next
End Sub
Betrifft: erstelle ein temporäres Array ...
von: Tino
Geschrieben am: 26.01.2010 09:56:28
Hallo,
und fülle es mittel Schleife mit den Daten die Du benötigst,
mit Redim Preserve stutzt Du es danach zurecht.
Selbst bei 10000 Daten geht dies recht schnell.
Beispiel:
Sub Beispiel() Dim meAr(1 To 10000, 1 To 2) Dim tmpAr() Dim A As Long, tmpCounter 'für Beispiel mit Daten füllen For A = 1 To 10000 meAr(A, 1) = CStr(A) meAr(A, 2) = A + A Next A 'tmpAr genügend groß Dimensionieren Redim Preserve tmpAr(1 To Ubound(meAr, 2), 1 To Ubound(meAr)) 'tmpAr mit Daten füllen, hier alles was eine 100 im Text enthält For A = 1 To Ubound(meAr) If InStr(meAr(A, 1), "100") > 0 Then tmpCounter = tmpCounter + 1 tmpAr(1, tmpCounter) = meAr(A, 1) tmpAr(2, tmpCounter) = meAr(A, 1) End If Next A 'tmpAr auf benötigte Größe Dimensionieren Redim Preserve tmpAr(1 To Ubound(tmpAr), 1 To tmpCounter) 'tmpAr drehen tmpAr = Application.Transpose(tmpAr) 'Beispiel Ausgabe For A = 1 To Ubound(tmpAr) Debug.Print tmpAr(A, 1), tmpAr(A, 2) Next A End SubGruß Tino