Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilen in anderes Tabellenblatt kopieren

Zeilen in anderes Tabellenblatt kopieren
07.08.2008 11:05:49
Jürgen
Hallo Excel-Profis,
ich suche eine VBA-Lösung zu folgendem Problem:
Ich möchte aus Tabelle1 (Max. 100 Zeilen) die kompletten Zeilen, wenn in Spalte J ein x steht,
in Tabelle3 kopieren, aber nur die Werte, keine Formeln, Formatierungen, Verknüpfungen usw.!
In die Tabelle3 sollen die eingefügten Zeilen aus Tabelle1 immer die erste freie Stelle geschrieben
werden.
Noch zur Info: Die Spaltenzahl (A-J) in Tabelle1 bleibt immer gleich, nur die Zeilenzahl kann sich
ändern.
Eine ähnliche Lösung existiert bereits im Archiv, hier werden jedoch alle Formatierungen usw.
mit übertragen!
Wer kann mir hier weiterhelfen?
Gruß Jürgen

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen in anderes Tabellenblatt kopieren
07.08.2008 11:14:00
David
Eine ähnliche Lösung existiert bereits im Archiv, hier werden jedoch alle Formatierungen usw.
mit übertragen!

Wenn du dazu schon ein Makro gefunden hast, kannst du die entsprechende Zeile in dem Makro, das die Zeilen in die neue Tabelle einfügt, nicht derart anpassen, dass nur die Werte eingefügt werden?
so nach dem Schema: ....PasteSpecial Paste:=xlPasteValues...
Gruß
David

Anzeige
AW: Zeilen in anderes Tabellenblatt kopieren
07.08.2008 11:24:00
Jürgen
Hallo David,
das geht leider nicht, weil das Makro ganz anders aufgebaut ist (siehe unten):

Sub test()
For i = 1 To Cells(Rows.Count, 8).End(xlUp).Row
If Cells(i, 8).Value = "x" Then
Rows(i).Copy Destination:=Sheets("Tabelle2").Cells(Sheets("Tabelle2").Cells(Rows.Count, 1).End( _
xlUp).Row + 1, 1)
End If
Next
End Sub


Ich bin auch nicht so fitt, dass ich das Makro komplett umbauen könnte.
Gruß Jürgen

Anzeige
AW: Zeilen in anderes Tabellenblatt kopieren
07.08.2008 11:33:00
David
versuchs doch mal so:

Rows(i).Copy Destination:=Sheets("Tabelle2").Cells(Sheets("Tabelle2").Cells(Rows.Count, 1)
.End(xlUp).Row + 1, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks
:=False, Transpose:=False


bin aber auch Laie bei VBA, deswegen ohne Garantie.
Gruß
David

Anzeige
AW: Zeilen in anderes Tabellenblatt kopieren
07.08.2008 11:43:13
Ramses
Hallo
probier mal

Sub test()
Dim i As Long, tLR As Long
Dim tarWks As Worksheet, srcWks As Worksheet
Set srcWks = Worksheets("Tabelle1")
Set tarWks = Worksheets("Tabelle2")
With srcWks
For i = 1 To .Cells(.Rows.Count, 10).End(xlUp).Row
If .Cells(i, 10).Value = "x" Then
tLR = tarWks.Cells(Rows.Count, 1).End(xlUp).Row + 1
Debug.Print tLR
With tarWks
.Range(.Cells(tLR, 1), .Cells(tLR, 10)).Value = srcWks.Range(srcWks.Cells(i, 1), _
srcWks.Cells(i, 10)).Value
End With
End If
Next i
End With
End Sub


Gruss Rainer

Anzeige
AW: Zeilen in anderes Tabellenblatt kopieren
07.08.2008 12:10:00
Jürgen
Hallo David und Rainer,
Danke für eure Hilfe.
Bei dem abgeänderten Makro von David kommt die Fehlermeldung:
"Fehler beim kompilieren. Syntaxfehler" !!
Aber das Makro von Rainer funktioniert einwandfrei.
Nochmals besten Dank.
Gruß Jürgen

AW: einfache und schnelle lösung
07.08.2008 12:28:00
Daniel
Hi
Probier mal das Makro hier:

Sub kopieren()
With Sheets("Tabelle1").UsedRange
.AutoFilter Field:=10, Criteria1:="x"
.Offset(1, 0).SpecialCells(xlCellTypeVisible).Copy
End With
Sheets("Tabelle3").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Sheets("Tabelle1").UsedRange.AutoFilter
End Sub


allerdings sollte die erste Zeile in Tabelle1 eine Überschriftenzeile sein.
Gruß, Daniel

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in ein anderes Tabellenblatt kopieren


Schritt-für-Schritt-Anleitung

Um bestimmte Zeilen in ein anderes Tabellenblatt zu kopieren, kannst du das folgende VBA-Makro verwenden. Dieses Beispiel geht davon aus, dass du die kompletten Zeilen aus „Tabelle1“ in „Tabelle3“ kopieren möchtest, wenn in Spalte J ein „x“ steht.

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf „Einfügen“ und wähle „Modul“, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden Code in das Modul:

    Sub ZeilenKopieren()
       Dim i As Long, tLR As Long
       Dim srcWks As Worksheet, tarWks As Worksheet
    
       Set srcWks = Worksheets("Tabelle1")
       Set tarWks = Worksheets("Tabelle3")
    
       With srcWks
           For i = 1 To .Cells(.Rows.Count, 10).End(xlUp).Row
               If .Cells(i, 10).Value = "x" Then
                   tLR = tarWks.Cells(Rows.Count, 1).End(xlUp).Row + 1
                   tarWks.Range(tarWks.Cells(tLR, 1), tarWks.Cells(tLR, 10)).Value = .Range(.Cells(i, 1), .Cells(i, 10)).Value
               End If
           Next i
       End With
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf „Ausführen“ klickst.


Häufige Fehler und Lösungen

  • Fehlermeldung: "Fehler beim kompilieren. Syntaxfehler"

    • Stelle sicher, dass der Code korrekt kopiert wurde, insbesondere Anführungszeichen oder Klammern.
  • Zeilen werden nicht kopiert

    • Überprüfe, ob in Spalte J tatsächlich „x“ steht. Das Makro sucht nach einem exakten Treffer.
  • Formatierungen werden mitkopiert

    • Das obige Makro kopiert nur die Werte. Wenn du Formatierungen benötigst, musst du den Code anpassen.

Alternative Methoden

Eine einfache Methode, um Zeilen in ein anderes Tabellenblatt zu kopieren, ist die Verwendung des Autofilters. Hier ist ein weiteres Beispiel:

Sub ZeilenMitFilterKopieren()
    With Sheets("Tabelle1").UsedRange
        .AutoFilter Field:=10, Criteria1:="x"
        .Offset(1, 0).SpecialCells(xlCellTypeVisible).Copy
    End With
    Sheets("Tabelle3").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
    Sheets("Tabelle1").UsedRange.AutoFilter
End Sub

Dieses Makro filtert die Zeilen, die „x“ in Spalte J haben, und kopiert sie direkt in „Tabelle3“.


Praktische Beispiele

Wenn du beispielsweise nur bestimmte Zeilen aus einer Tabelle übernehmen möchtest, kannst du eine Bedingung hinzufügen, um weitere Kriterien zu prüfen. Hier ist ein Beispiel, das auch das Kriterium für Spalte A berücksichtigt:

If .Cells(i, 10).Value = "x" And .Cells(i, 1).Value = "Bedingung" Then

Mit dieser Bedingung werden nur die Zeilen kopiert, die sowohl in Spalte J als auch in Spalte A bestimmten Kriterien entsprechen.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False und Application.ScreenUpdating = True, um das Blinken des Bildschirms während des Makro-Laufs zu verhindern.
  • Du kannst auch die Funktion WorksheetFunction.CountIf nutzen, um die Anzahl der Zeilen zu zählen, die kopiert werden, bevor du das Kopieren durchführst.
  • Denke daran, dass die Indizes von Excel-Tabellen 1-basiert sind, das heißt, die erste Zeile ist Zeile 1.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um nur bestimmte Spalten zu kopieren?
Du kannst die Zeilen im Code anpassen, die die Zielzelle definieren, um nur die gewünschten Spalten zu kopieren.

2. Kann ich das Makro automatisch ausführen lassen?
Ja, du kannst das Makro so einrichten, dass es beim Öffnen der Datei oder bei bestimmten Änderungen automatisch ausgeführt wird.

3. Was, wenn ich mehr als zwei Tabellenblätter verwenden möchte?
Du kannst das Makro erweitern, indem du weitere Bedingungen und Zielblätter hinzufügst, je nach deinen Anforderungen.

4. Wo finde ich das VBA-Fenster?
Du kannst das VBA-Fenster öffnen, indem du ALT + F11 drückst, während du in Excel bist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige