Microsoft Excel

Herbers Excel/VBA-Archiv

Teil eines mehrdimensionalen Arrays in kopieren | Herbers Excel-Forum


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

Vielen Dank
Oswald

  

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 Sub
Gruß Tino


Beiträge aus den Excel-Beispielen zum Thema "Teil eines mehrdimensionalen Arrays in kopieren"