Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1132to1136
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Teil eines mehrdimensionalen Arrays in kopieren | Herbers Excel-Forum

Teil eines mehrdimensionalen Arrays in kopieren
26.01.2010 08:19:14
Oswald

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

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
erstelle ein temporäres Array ...
26.01.2010 09:56:28
Tino
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
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige