Hallo liebe Helfende im Forum,
ich würde gerne folgendes Problem lösen - bin mir aber nicht sicher ob es überhaupt so funktionieren kann.
Es soll nur eine bestimmte Spalte eines Arrays in das Tabellenblatt einfügt werden.
Mit diesem Code wird das gesamte Array (2 dimensional) "auf einmal" in den passenden Bereich eingefügt/Übertragen.
'Ausgabe des Ergebnis-Datenfelds
With tbl_Erg
' .Cells(1, 1).Resize(UBound(VarDatErg, 1), UBound(VarDatErg, 2)) = VarDatErg
.Range(.Cells(1, 1), .Cells(UBound(VarDatErg, 1), UBound(VarDatErg, 2))) = VarDatErg 'alternativer Code zu resize
End With
Ist es möglich auch nur eine bestimmte Spalte zB die erste, die letzte oder die 2.Spalte analog dem Befehl oben einzufügen?
Das klappt nicht, aber vielleicht etwas ähnliches?
With tbl_Erg
'.Range(.Cells(1, 1), .Cells(UBound(VarDatErg, 1), 1)) = VarDatErg(UBound(VarDatErg, 1), 1)
.Range(.Cells(1, 1), .Cells(UBound(VarDatErg, 1), 1)) = VarDatErg(UBound(VarDatErg, 1), 6)
End With
Freue mich über Eure Hilfe, viele Grüße
MiSchi
Hallo MiSchi,
warum schaufelst du die Daten aus dem einen Array nicht in ein anderes um? Das dauert selbst bei 1.000.000 Einträgen nur ein paar Millisekunden.
Gruß
Nepumuk
Betrifft: AW: Bestimmte Spalte eines Array auslesen
Danke Nepumuk!
ich weiß nicht wie ich das realisiere. Hier stehe ich auch vor dem Problem, wie ich die gewünschte Spalte des einen Arrays in ein neues (1 spaltiges) schaufle.
Viele Grüße
Michael
Betrifft: AW: Bestimmte Spalte eines Array auslesen
Über einen kleinen Umweg dauert es bei 20.000 Zeilen nur Milisekunden - Guckst du hier:
Die Datei https://www.herber.de/bbs/user/153305.xlsm wurde aus Datenschutzgründen gelöscht
Wenn es immer nur die erste Spalte wäre, ginge es noch viel einfacher.
Betrifft: AW: Bestimmte Spalte eines Array auslesen
Danke onur!
Gute Idee über eine Hilfstabelle, das Problem zu lösen.
Ich hätte gehofft, innerhalb vom Macro es lösen zu können. Beim Googeln bin ich auf etwas gestoßen, was nach einigem try and error funktionierte.
Ich verstehe leider nicht warum die Version in Private Sub ArrayZuArrayKopieren_1() nicht funktioniert; die von Private Sub ArrayZuArrayKopieren_2() schon.
Vielleicht will mir jemand erklären wo ich falsch denke - ich würde mich sehr freuen.
Ich vermute, dass meine Vorstellung eines Arrays falsch ist.
Array (1 to 20000) erzeugt ein Datenfeld wo ich 20000 Werte eintragen kann. Das Array hat eine Dimension.
Das würde doch reichen, um die Werte der 3. Spalte aufzunehmen.
Im Lokalfenster sehe ich, dass die richtigen Werte den jeweiligen ar(z) zugeordnet wurden. Nur werden diese nicht, sondern nur der Wert von ar(1) in die Tabelle1 kopiert.
Mit Array (1 to 20000, 1 to 1) erzeuge ich ein 2-dimensionales Array. Array (Dim1, Dim2); die 2.Dimension ist 1 Feld.
Ich habe aber nur eine Dimension zu befüllen.
Wo ist mein Denkfehler?
Falls es hilft habe ich die Mappe angehängt. https://www.herber.de/bbs/user/153308.xlsm
Vielen Dank und Grüße
MiSchi
Betrifft: AW: Bestimmte Spalte eines Array auslesen
Tabelle1.Range("C1:C20000") = argeht nur mit zwei-dimensionalem ar - Deswegen.
Betrifft: AW: Bestimmte Spalte eines Array auslesen
ok, vielen Dank onur
viele Grüße Michael
Betrifft: Dann eben so !
Aber SO geht es DOCH noch :)
https://www.herber.de/bbs/user/153310.xlsm
Betrifft: AW: Dann eben so !
Danke onur für Deine weitere Hilfe,
bei mir steht überall das selbe - genau wie bei meinem Versuch mit dem 1dim Array - immer nur der Wert von ar(1) Z1S4. Obwohl die folgenden ar(z) fortlaufend gefüllt sind.
Ist das bei dir anders?
Viele Grüße
MiSchi
Betrifft: AW: Bestimmte Spalte eines Array auslesen
Spalten 1, 6, und 8
Sub m_snb() tbl_Erg.Cells(1).Resize(UBound(VarDatErg), 3) = application.index(VarDatErg,evaluate("row(1:" & UBound(VarDatErg) & ")"),array(1,6,8)) End Sub
Betrifft: AW: Bestimmte Spalte eines Array auslesen
Danke snb - auch eine gute Lösung!
MiSchi
Betrifft: AW: Bestimmte Spalte eines Array auslesen
HI
.Range(.Cells(1, 1), .Cells(UBound(VarDatErg, 1), 1)) = Worksheetfunction.Index(VarDatErg, 0, 1)
0 im zweiten Parameter = alle Zeilen
1 im dritten Parameter = erste Spalte
Gruß Daniel