Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
920to924
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
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ganze zeile im zweidimensionalen array auslesen,

Ganze zeile im zweidimensionalen array auslesen,
28.10.2007 22:22:32
Boris
Guten Abend Excel-Freunde!
Hab' folgende Frage. Wie lese ich aus einem zweidimensionalen Array nur eine Zeile aus, ohne for...next-Schleife zu benutzen?
Beispiel: Ein ganzes zweidimensionales Array YXZ() lese ich in die Tabelle mit folgendem Code aus:
Range(Cells(1, 1), Cells(UBound(XYZ(), 1), UBound(XYZ(), 2)))=XYZ.
Das funktioniert soweit prima. Nun würde ich gern in ein Zellenbereich eine x-beliebige Zeile (z.B. Zeile Nr. 2: Die Werte XYZ(2, 1), XYZ (2, 2) ... XYZ(2, UBound(XYZ, 2)) ) aus XYZ auslesen. Ich bräuchte ein Code, das mir etwas in der Art ermöglicht:
Range(Cells(1, 1), Cells(UBound(XYZ(), 1), UBound(XYZ(), 2)))= XYZ(2) (oder XYZ.Item(2))?
Für einen Lösungsvorschlag wäre ich Euch sehr dankbar!
Gruss Boris L.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Korrektur...
28.10.2007 22:25:00
Boris
Verzeihung, ich meinte folgendes:
Range(Cells(1, 1), Cells(1, UBound(XYZ(), 2)))= XYZ(2) (oder XYZ.Item(2))?
Gruss Boris L.

AW: Korrektur...
28.10.2007 23:43:52
Original
Hi,
Bahnhof, Tipp, beschreib das Ziel, nicht den Weg.
mfg Kurt

AW: Korrektur...
29.10.2007 00:10:00
Boris
Hi,
danke für den Tip! Das Ziel ist, die Werte einer Zeile aus dem zweidimensionalen Array in ein Zellenbereich innerhalb einer Tabellenzeile ohne for...next-Schleife zu übertragen.
Ich kann den ganzen zweidimensionalen Array in eine Tabelle ohne for..next übertragen. Mich interessiert, ob dies auch nur mit einer Zeile aus diesem Array machbar ist.
Gruss Boris L.

Anzeige
AW: Korrektur...
29.10.2007 00:40:00
Original
Hi,
das geht schon, aber nur mit der Array-Funktion, die den Datentyp Variant voraussetzt.
Welchen Gewinn erhoffst du?
mfg Kurt

AW: Korrektur...
29.10.2007 11:10:57
Boris
Hallo Kurt,
vielen Dank für Deine Zeit und Deine Aufmerksamkeit!
Mir geht es um die Schnelligkeit der Macroausführung. Ich möchte 1 Array mit ca 3.000 datensätzen mit weiteren 4 Arrays vergleichen. Jedes der weiteren 4 Arrays enthält 30.000 Datensätze. Wenn die Übereinstimmung gefunden ist, möchte ich, dass die zutreffende Zeile aus dem jeweiligen „großen“ Array in die Tabelle im Excel-Sheet übernommen wird. Das Macro habe ich soweit erstellt, und es funktioniert. Ich möchte nur die for..next-Schleife umgehen: Die Datensätze aus dem Array sollen so wie sie sind, z.B. Zeile Nr. 2:
arr(2, 1), arr(2, 2) ... arr(2, Ubound(arr(), 2))
in den Zellenbereich der Excel-Tabelle
Cells(1, 1), Cells(1, 2) … Cells(1, Ubound(arr(), 2))
übernommen werden.
Den kompletten Array kann ich wunderbar übernehmen. Das mache ich in diesem Fall so:
Range(„A1:A“& Ubound(arr(), 2)) = arr
Wie kann ich auf ähnliche Weise nur eine Zeile aus dem Array arr() in die Tabelle übernehmen?
Gruss
Boris L.

Anzeige
AW: Korrektur...
29.10.2007 00:51:00
Gerd
Hallo Boris,
es kommt darauf an, ob dein Array einen Range als Quelle hat.

Sub test()
Dim vnt1, vnt2, i
vnt1 = Range("A1:C4").Value
ReDim vnt2(1 To UBound(vnt1, 2))
For i = 1 To UBound(vnt1, 2)
vnt2(i) = vnt1(2, i)
Next
Range(Cells(8, 1), Cells(8, UBound(vnt2))) = vnt2
Dim arr As Variant
arr = Array(vnt1(2, 1), vnt1(2, 2), vnt1(2, 3))
Range(Cells(10, 1), Cells(10, UBound(arr) + 1)).Value = arr
Dim Bereich As Range
Set Bereich = Range("A1:C4")
Range(Cells(12, 1), Cells(12, Bereich.Columns.Count)).Value = _
Range(Bereich(2, 1), Bereich(2, Bereich.Columns.Count)).Value
Range(Cells(14, 1), Cells(14, Bereich.Columns.Count)).Value = Bereich.Rows(2).Value
End Sub


Gruß Gerd

Anzeige
AW: Korrektur...
29.10.2007 11:12:13
Boris
Hallo Gerd,
ersmal vielen Dank für Deine Mühe und Deine Beispiele!
Genau das ist der Punkt, daß mein Array nicht direkt dem Range sondern einer Collection entstammt. Die zutreffenden Items dieser Collection habe ich mit der Split-Methode geteilt und mit for..next in die jeweiligen Zeilen meines Arrays übernommen. Das Array ist so aufgebaut:
Redim Preserve arr(1 to 2000, 1 to 15)
Zu Deinen Beispielen.
Beispiel 1.
Du bildest aus der Zeile 2 des Arrays vnt1 einen neuen Array vnt2 anhand einer for...next-Schleife. Dann fügst Du vnt2 in ein Range komplett ein. Das ist eine gute Idee und die funzt schnell. Jedoch die for...next-Schleife, um den „Zeilen-Array“ vnt2 aufzubauen, ist immer noch im Spiel. Ist es denn nicht möglich, die Zeile 2 im Array vnt1 komplett anzusprechen, ohne dafür das Array vnt2 zu bilden?
Beispiel 2.
Um zum Array „arr“ zu kommen, der so aufgebaut ist, wie in Deinem Beispiel, nähmlich:
arr = Array(vnt1(2, 1), vnt1(2, 2), vnt1(2, 3))
muss ich wieder auf die for…next zurückgreifen:
For i = 1 to Ubound(vnt, 2)
arr = Array(arr & “,” & vnt(2, i))
Next i
oder so ähnlich. Also for...next ist wieder im Spiel.
Bitte versteh mich nicht falsch. Ich bin Dir sehr dankbar für die Beispiele und Deine Mühe! Wenn Ihr sagt, es ist sonst nicht möglich, eine Zeile aus dem zweidimensionalen Array zu nehmen, ohne dafür vorher einen Zwischen-Array bilden, und ihre Datensätze den Datensätzen im Tabellen-Range einer Zeile ohne for...next-Schleife zuzuordnen, dann betrachtet diesen Thread als abgeschlossen, und Deine beiden obigen Beispiele als die bestmögliche Lösung.
Gruss
Boris L.

Anzeige
AW: Korrektur...
29.10.2007 20:53:00
Gerd
Hallo Boris,
da dies hier für mich "just for fun" ist, sollst Du nicht ohne Antwort bleiben.
Ich kenne keine Rows-Eigenschaft echter Datenfelder.
Du könntest eine Beispiel-Collection mit ein paar representativen Items u. Keys zeigen u. den
Weg wie diese bisher in ein Array übergeben werden.
Ggf. sind auch die Möglichkeiten der Split-Funktion noch nicht voll ausgeschöpft.
Gruß Gerd

AW: Korrektur...
30.10.2007 11:13:00
Boris
Hallo Gerd,
Danke für das Info! Ich habe wieder was dazu gelernt, und weiss jetzt, das es mit den einzelnen Zeilen so nicht geht, wie ich es mir vorgestellt habe. Ich habe dein Beispiel Nr. 1 in mein Macro eingebaut, und es funzt einwandfrei. Nochmal herzlichen Dank dafür!
Meine Collection und die ganzen Arrays hier nochmal zu posten ist nicht mehr notwendig. Du hast alle meine Fragen ausfürlich beantwortet und sogar 4 Lösungsvorshläge gemacht. Die Problemstellung dieses Threads ist erfolgreich gelöst. Ich lerne sehr viel durch die Recherchen in diesem Forum und finde es ganz toll, dass die Wissensträger wie Du Euch die Zeit nimmt, und die Fragen beantwortet! Weiter so, und viel Erfolg!
Gruss
Boris L.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige