Nur spezielle Daten (mit Wert in Spalte A) aus anderer Tabelle kopieren - Excel 2003
Hallo allerseits,
mein Problem ist folgendes:
ich habe Tabellen mit Überschriften (die über die ersten 4 Spalten A-Dgehen, Gliederung 1. 2. usw und Text), und in den Zeilen darunter noch weitere Daten. Ich möchte diese Zeilen mit Überschriften in eine andere Tabelle kopieren, am Besten mit jeweils einer Leerzeile dazwischen.
Die Zeilen, die nicht kopiert werden sollen, enthalten in Spalte A-C keine Daten.
In der Zieltabelle sollen die Daten wieder in den Spalten A-D auftauchen, ungefähr ab Zeile 20. Davor ist Text vorhanden, danach auch wieder (als Vorlage). Die Anzahl der kopierten Zellen ist je nach Ausgangstabelle jedoch unterschiedlich.
Ist dies möglich? Vielleicht auch in Einzelschritten.
Vielen Dank für Eure Hilfe -
Grüße mika
Antwort schreiben
Antwort 1 von coros vom 08.01.2020, 05:43 Options
Hallo mika,
ich hoffe, ich habe das richtig verstanden. Nachfolgendes Makro durchsucht jede Zeile die Spalten A:D. Wenn in der Zeile in Spalte A, B und C etwas steht, werden die Wert aus A:D der Zeile kopiert und in Tabellenblatt "Tabelle2" in die erste freie Zeile eingefügt. Der erste kopierte Wert wird in Zeile 20, alle weiteren darunter eingefügt.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.[b]Option Explicit
Sub Kopieren()
Dim iRow As Long
Dim iRowTab2 As Long
Application.ScreenUpdating = False
iRowTab2 = 20
For iRow = 1 To Range("A:D").Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
If Cells(iRow, 1) <> "" And Cells(iRow, 2) <> "" And Cells(iRow, 3) <> "" Then
Range(Cells(iRow, 1), Cells(iRow, 4)).Copy
Sheets("Tabelle2").Cells(iRowTab2, 1).PasteSpecial
iRowTab2 = iRowTab2 + 1
End If
Next
End Sub[/b]
Ich hoffe, Du kommst klar.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von mikaf vom 08.01.2020, 20:31 Options
Danke, das ging ja superschnell-
ich werde es morgen gleich mal testen,
und meld mich dann nochmal.
Bis dahin ciao
mikaf
Antwort 3 von mikaf vom 09.01.2020, 11:57 Options
So, jetzt hab ich es getestet,
Du hast mich richtig verstanden...
Super!
Vielen Dank schon mal!
Jetzt gehts weiter,
ich habe versucht, die Inhalte nicht nur einzufügen, sondern (analog rechter Mausklick "kopierte Zeilen einfügen") Zeilen einzufügen.
Das hat auch funktioniert - siehe unten - aber es werden nur von Spalte A-D Zeilen eingefügt, aber in Spalten E-...(am Anfang nur mit Rahmen formatiert ohne Inhalte) nicht.
Ich könnte die Formatierung weglassen, müßte sie dann aber jedesmal neu erstellen, außerdem werden vielleicht noch Inhalte dort eingefügt (zum Beispiel Summe in der Zelle F20 o.ä.)
Wie zähle ich die kopierten Zeilen damit ich vor "PasteSpecial in Tabelle2 - ich hab sie Auswertung genannt - die entsprechende Zeilenanzahl einfügen kann?
Oder gibt es einen anderen Weg?
Option Explicit
Sub Kopieren()
Dim iRow As Long
Dim iRowTab2 As Long
Application.ScreenUpdating = False
iRowTab2 = 20
For iRow = 1 To Range("A:D").Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
If Cells(iRow, 1) <> "" And Cells(iRow, 2) <> "" And Cells(iRow, 3) <> "" Then
Range(Cells(iRow, 1), Cells(iRow, 4)).Copy
Sheets("Auswertung").Cells(iRowTab2, 1).Insert Shift:=xlDown
iRowTab2 = iRowTab2 + 1
End If
Next
End Sub
Das war mein bescheidener Versuch, nach vielen Tests und Makroaufzeichnungen ;-)
Antwort 4 von coros vom 09.01.2020, 12:06 Options
Hallo Mika,
wenn Du mehr als nur Spalte A bis D kopieren möchtest, musst Du in dem Makro in der Zeile
[b]Range(Cells(iRow, 1), Cells(iRow, 4)).Copy[/b]
die Zahl 4 ändern. Diese steht für die Spaltenindexzahl. Die Spaltenindexzahl fängt mit 1 für Spalte A an und hört bei 256 für Spalte IV auf. Das bedeutet, wenn Du auch noch Spalte E mitkopieren möchtest, musst Du die Zahl 4 in 5 für Spalte E ändern. Soll bis Spalte F kopiert werden, wäre es die Zahl 6, bis Spalte G wäre es die Zahl 7 usw.
Ich hoffe, Du hast das Prinzip verstanden. Wenn nicht, melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.