![]() |
Betrifft: Text in Array speichern und auslesen
von: Stefanie
Geschrieben am: 06.10.2014 12:49:19
Guten Tag,
wie das mit dem Array funktioniert wurde mir hier in dem Forum schon super klasse erklärt. Vielen dank nochmals dafür! Nun meine Frage:
Hätte jemand ein kleines Beispiel für mich wie ich meine Kopie
Cells(3, lSpalte + 1).Copyin einem Array speicher und diese dann in einem neuen Tabellenblatt wieder einfüge?
![]() ![]() |
Betrifft: AW: Text in Array speichern und auslesen
von: Martin
Geschrieben am: 06.10.2014 13:45:09
Hallo Stefanie,
bei deinem Beispiel braucht man kein Array, eine einzelne Zelle kannst du auch einer einzelnen variablen zuweisen. Hier mal ein Beispiel mit einem Zellbereich A1 bis C3:
Sub Beispiel() Dim varArray As Variant 'Zellbereich einem Array zuweisen varArray = Range("A1:C3").Value 'Anderen Zellbereich mit Array füllen Range("A4").Resize(UBound(varArray, 1), UBound(varArray, 2)) = varArray End SubViele Grüße
![]() ![]() |
Betrifft: Ergänzung
von: Martin
Geschrieben am: 06.10.2014 15:14:43
Hallo Stefanie,
du kannst Zelleninhalte übrigens auch direkt kopieren, ohne die Daten in einer Variable "zwischenlagern" zu müssen.
Beispiel:
Sub Beispiel() 'Inhalt aus einzelner Zelle kopieren Sheets(3).Range("A1") = Sheets(2).Range("C5").Value 'Zellenbereich kopieren Sheets(1).Range("A1:C3").Copy (Sheets(3).Range("A5")) End SubViele Grüße
![]() ![]() |
Betrifft: AW: Ergänzung
von: Stefanie
Geschrieben am: 07.10.2014 11:11:34
Vielen dank zunächst für deine Hilfe. Ist diese Variante schneller?
Also ich suche eben in mehreren Zeilen nach einem "x", wenn eines gefunden wurde, sollen bestimmte Texte kopiert werden. Das können ziemlich viele sein. Da ich dies ja gerade folgendermaßen mache:
Suche X, wenn gefunden, kopiere Zelle, wechsle Tabellenblatt und füge ein
Natürlich dauert dies zu lange.
Daher dachte ich durch einen Array kann ich dieses hin und her springen ersteinmal verhindern, da ich dann erst zum Schluss alles in das andere Tabellenblatt kopiere.
![]() ![]() |
Betrifft: AW: Text in Array speichern und auslesen
von: Stefanie
Geschrieben am: 07.10.2014 11:15:23
Aber wenn ich ein einem Tabellenblatt, ziemliche viele Texte habe ist ein Array doch sinnvoll oder? Dann kann ich alle Texte erst einmal darin ablegen und dann erst in ein neues Tabellenblatt wechseln und alle Inhalte gleichzeitig einfügen?
Oder sehe ich das falsch ? :-(
Viele Grüße
![]() ![]() |
Betrifft: AW: Text in Array speichern und auslesen
von: Daniel
Geschrieben am: 07.10.2014 11:19:40
HI
kann man prinizipell machen, ist aber auch nicht schneller als die Werte komplett zu kopieren.
Wenn du die Zellbereiche direkt ansprichst, dann brauchst du ja auch nicht zwischen den Blättern zu wechseln.
Auch ist ein Copy-PasteSpecial gerade bei grossen Datenmengen schneller als das Einlesen und Schreiben in und aus einer Variablen.
Gruß Daniel
![]() ![]() |
Betrifft: AW: Text in Array speichern und auslesen
von: Stefanie
Geschrieben am: 07.10.2014 11:38:15
Genau aber das Problem ist, dass ich in einer Zeile nach einem "X" suche, wenn eins gefunden wurde dann muss ein bestimmter Text kopiert werden. Zu jedem gefundenen "X" gibts quasi einen anderen Text. Desewgen kann ich nicht einfach einen Bereich kopieren.
Ist das verständlich? Wie kann ich dieses Problem lösen?
Danke dir! VG
![]() ![]() |
Betrifft: AW: Text in Array speichern und auslesen
von: Daniel
Geschrieben am: 07.10.2014 11:52:19
Hi
wie sieht den die Problemstellung konkret aus?
kannst du mal ne Beispieldatei hochladen und kennzeichnen was wohin kopiert werden soll?
Gruß Daniel
![]() ![]() |
Betrifft: AW: Text in Array speichern und auslesen
von: Stefanie
Geschrieben am: 07.10.2014 12:04:27
Gern ich hoffe das ist verständlich so:
https://www.herber.de/bbs/user/92999.xlsx
![]() ![]() |
Betrifft: AW: Text in Array speichern und auslesen
von: Daniel
Geschrieben am: 07.10.2014 14:02:04
HI
unter verwendung einer Hilfstabelle mit einfachen Formeln:
https://www.herber.de/bbs/user/93005.xlsx
Gruß Daniel
![]() ![]() |
Betrifft: AW: Text in Array speichern und auslesen
von: Stefanie
Geschrieben am: 07.10.2014 14:07:04
Aber ohne VBA :-)
![]() ![]() |
Betrifft: AW: Text in Array speichern und auslesen
von: Daniel
Geschrieben am: 07.10.2014 14:55:19
hi
warum VBA, wenns mit zwei einfachen Formeln funktioniert?
zum Vergleich der benötigte VBA-Code
Sub test() Dim arrM Dim arrG Dim arrX Dim Erg Dim z As Long Dim s As Long With Sheets("Tabelle1") arrG = .Range(.Cells(4, 1), .Cells(4, 1).End(xlDown)) arrM = .Range(.Cells(2, 2), .Cells(2, 2).End(xlToRight)) arrX = .Range(.Cells(4, 2), .Cells(.Cells(4, 1).End(xlDown).Row, .Cells(2, 2).End(xlToRight) _ .Column)) ReDim Erg(1 To UBound(arrG, 1), 1 To 2) End With For z = 1 To UBound(arrG, 1) For s = 1 To UBound(arrM, 2) Erg(z, 1) = arrG(z, 1) If arrX(z, s) = "x" Then Erg(z, 2) = Erg(z, 2) & vbLf & arrM(1, s) End If Next If Len(Erg(z, 2)) > 0 Then Erg(z, 2) = Mid$(Erg(z, 2), 2) Next Sheets("Tabelle2").Cells(2, 1).Resize(UBound(Erg, 1), 2).Value = Erg End Sub
Sub test2() Sheets("Tabelle1").Cells.Copy Sheets("Tabelle3").Cells(1, 1) With Sheets("Tabelle3") With .Range(.Cells(4, 2), .Cells(.Cells(4, 1).End(xlDown).Row, .Cells(2, 2).End(xlToRight). _ Column)) .FormulaR1C1 = "=IF(Tabelle1!RC=""x"", Tabelle1!R2C,"""")&IF(RC[1]<>"""",CHAR(10),"""")& _ RC[1]" End With .Range(.Cells(4, 1), .Cells(4, 1).End(xlDown).Offset(0, 1)).Copy Sheets("Tabelle2").Cells(2, 1).PasteSpecial xlPasteValues End With End Subbraucht deutlich weniger Zeilen und ist vorallem dann viel angenehmer, wenn du den Code im Einzelstep testen musst.
![]() |