Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ganze Spalte bis zum letzten Eintrag kopieren

Ganze Spalte bis zum letzten Eintrag kopieren
09.07.2017 16:22:55
Stephan
Hallo Zusammen,
Ich habe folgendes Anliegen. Ich möchte alle Werte einer Spalte von Tabelle 1 in Tabelle 2 kopieren. Sofern ich den Bereich benenne, funktioniert es (b). Allerdings hätte ich es lieber, wenn automatisch der letzte Eintrag ermittelt wird (a). Bei (a) erhalte ich immer einen Laufzeitfehler 1004. Kann mir jemand sagen, wie ich die Spalte mit xlDown kopieren kann? Vielen Dank.
Grüße
Stephan
a) Worksheets("Tabelle1").Range("B2", Cells(Range("B2").End(xlDown).Row, "B")).Copy Destination:=Worksheets("Tabelle2").Range("A1")
b) Worksheets("Tabelle1").Range("B2:B5000").Copy Destination:=Worksheets("Tabelle2").Range("A1")
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ganze Spalte bis zum letzten Eintrag kopieren
09.07.2017 16:25:20
Hajo_Zi
Halo Stephan,
ermittle die letzte Zeile, für Spalte A
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Anzeige
AW: Ganze Spalte bis zum letzten Eintrag kopieren
09.07.2017 16:57:35
Stephan
Hallo Hajo,
ich mache es dennoch: Danke für deine schnelle Antwort! Leider funktioniert es noch nicht wie gewünscht. Habe folgenden Code:
Sub Test()
Dim Loletzte As Long
With Worksheets("Tabelle1")
Loletzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
.Cells(Loletzte, 1).Copy Destination:=Worksheets("Tabelle2").Range("A1")
End With
End Sub
Allerdings kopiert er nicht die ausgefüllten Zellen in Tabelle2.
Grüße
Stephan
Anzeige
AW: Ganze Spalte bis zum letzten Eintrag kopieren
09.07.2017 17:04:55
Hajo_Zi
ja es Gehlen die Punkte vor Rows und Cells.
Ich dachte Du möchtet einen Bereich kopieren, aber das habe ich wohl falsch gelesen.
Ich dachte es geht auch um Spalte B , aber das habe ich wohl auch falsch gesehen. 1 auf 2 ändern ist wohl das Problem.
Gruß Hajo
Anzeige
AW: Ganze Spalte bis zum letzten Eintrag kopieren
09.07.2017 16:33:00
Werner
Hallo Stephan,
z.B. so:
Dim loLetzte AS Long
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range(.Cells(2, 2), .Cells(loLetzte, 2)).Copy Worksheets("Tabelle2").Cells(1, 1)
End With
Gruß Werner
AW: Ganze Spalte bis zum letzten Eintrag kopieren
09.07.2017 17:07:26
Stephan
Hallo Werner,
funktioniert perfekt. Vielen Dank. Noch zwei Fragen:
1. „.Range(.Cells(2, 2), .Cells(loLetzte, 2)).“ Verstehe ich wie folgt, Spalte B, Zeile 2. Ich hätte eher an …(2,1) gedacht.
2. Wenn ich loLetzte bereits definiert habe, warum muss ich die Spalte bei Cells(loLetzte, 2)) nochmal angeben?
Grüße
Stephan
Anzeige
AW: Ganze Spalte bis zum letzten Eintrag kopieren
09.07.2017 17:09:16
Hajo_Zi
Hallo Stephan,
Du hast Dich also für den Code entschieden der einen Fehler hat, aber das ist Deine Entscheidung.
Falls letzte Zelle in Spalte belegt gibt es einen falschen Wert.
Gruß Hajo
AW: Ganze Spalte bis zum letzten Eintrag kopieren
09.07.2017 17:20:11
Stephan
Hallo Hajo,
so viele Werte sind es in der Regel nicht. Nun hast du mich aber stutzig gemacht. Habe nun folgendes:
Sub Test_2()
Dim Loletzte As Long
With Worksheets("Tabelle1")
Loletzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
.Cells(Loletzte, 1).Copy Worksheets("Tabelle2").Cells(1, 1)
End With
End Sub
Allerdings wird nur der letzte Wert aus Tabelle 1, Spalte A kopiert. Ich benötige aber alle.
Grüße
Stephan
Anzeige
AW: Ganze Spalte bis zum letzten Eintrag kopieren
09.07.2017 17:22:47
Hajo_Zi
Halo Stephan,
Du schreibst
.Cells(Loletzte, 1).copy
also nur diese Zelle und keinen Bereich
Range("B1:B" & Loletzte).copy
ich bin dann raus, da meine Beiträge nicht komplett gelesen werden.
Das wird schon seinen Grund haben.
Gruß Hajo
Anzeige
zum Verstehen
09.07.2017 19:24:00
KlausF
Hi Stephan,
vergiss mal Hajos Gelabere. Der hat augenscheinlich 'ne böse Kindheit gehabt.
Ausgehend von Deiner (richtigen) Zeile
Worksheets("Tabelle1").Range("B2:B5000").Copy Destination:=Worksheets("Tabelle2").Range("A1")
muss mit einer Long-Variablen die letzte belegte Zeile ermittelt werden, z.B.:
Dim lastRow As Long
lastRow = Worksheets("Tabelle1").Cells(Rows.Count, "B").End(xlUp).Row
Die vorliegende Fassung ist für einen Anfänger einfacher zu verstehen als Hajos Variante mit
Cells(Rows.Count, 1), die nebenbei gesagt Blödsinn ist, weil es hier nicht um Spalte A (1) geht
sondern um Spalte B (jedenfalls wenn man genau gelesen hätte, was Hajo manchmal nicht macht).
Als nächstes muss die Variable in die Zeile eingebaut werden:
Worksheets("Tabelle1").Range("B2:B" & lastRow).Copy Destination:=Worksheets("Tabelle2").Range("A1")
Ergibt also z.B.:
Sub Kopieren()
Dim lastRow As Long
lastRow = Worksheets("Tabelle1").Cells(Rows.Count, "B").End(xlUp).Row
Worksheets("Tabelle1").Range("B2:B" & lastRow).Copy Destination:=Worksheets("Tabelle2").Range(" _
A1")
End Sub
Die in Hajos Fassung implementierte Abfrage IIf(IsEmpty(Cells(Rows.Count, 1)) geht davon aus,
dass abgefangen werden muss ob alle 1048576 Zeilen der Spalte B belegt sind (dann würde es eine
Fehlermeldung geben). Das ist natürlich rein theoretisch möglich aber nicht praxisgerecht, weil kein
Exceluser mit höherem IQ als 80 jemals so einen Schwachsinn verzapfen würde ...
Gruß
Klaus
Anzeige
AW: Ganze Spalte bis zum letzten Eintrag kopieren
09.07.2017 19:57:45
Stephan
Hallo,
nun habe ich mehrere Varianten und etwas gelernt. Vielen Dank an Hajo, Werner und KlausF. Euch einen schönen Sonntag.
Hier noch der angepasste Code von Hajo. Sicher gibt es nochmal jemanden, der dieselbe Frage hat. Er hat ja dann reichlich Auswahl ;-)
Grüße
Stephan
Sub Test_2()
Dim Loletzte As Long
With Worksheets("Tabelle1")
Loletzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
.Cells.Range("B1:B" & Loletzte).Copy Worksheets("Tabelle2").Cells(1, 1)
End With
End Sub

Anzeige
Gerne und Danke für die Rückmeldung. o.w.T.
10.07.2017 09:30:59
Werner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Ganze Spalte bis zum letzten Eintrag kopieren


Schritt-für-Schritt-Anleitung

Um in Excel eine ganze Spalte bis zum letzten Eintrag zu kopieren, kannst du den folgenden VBA-Code verwenden. Dieser Code ermittelt automatisch die letzte belegte Zeile und kopiert die Werte in eine andere Tabelle.

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

  2. Klicke auf Einfügen und wähle Modul.

  3. Füge den folgenden Code in das Modul ein:

    Sub Kopieren()
        Dim lastRow As Long
        lastRow = Worksheets("Tabelle1").Cells(Rows.Count, "B").End(xlUp).Row
        Worksheets("Tabelle1").Range("B2:B" & lastRow).Copy Destination:=Worksheets("Tabelle2").Range("A1")
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Drücke ALT + F8, wähle Kopieren und klicke auf Ausführen.

Damit kopierst du alle Werte von Spalte B in Tabelle 1 bis zum letzten Wert in Tabelle 2, beginnend bei Zelle A1.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt häufig auf, wenn der Bereich nicht korrekt definiert ist. Stelle sicher, dass du die richtige Spalte und den richtigen Bereich angibst, wie im obigen Beispiel.

  • Kopieren nur eines Wertes: Wenn du nur den letzten Wert kopierst, überprüfe, ob du den gesamten Bereich korrekt mit .Range("B2:B" & lastRow) angegeben hast.


Alternative Methoden

Falls du keine VBA-Programmierung nutzen möchtest, kannst du auch die folgenden Methoden verwenden:

  • Manuelles Kopieren: Markiere die Zellen von B2 bis zum letzten Eintrag in Spalte B, klicke mit der rechten Maustaste und wähle Kopieren. Gehe dann zu Tabelle 2 und füge die Daten mit Einfügen ein.

  • Verwendung von Formeln: Wenn die Daten dynamisch sind, kannst du eine Formel verwenden, um die letzten Werte in Tabelle 2 zu zeigen, ohne sie tatsächlich zu kopieren. Zum Beispiel:

    =WENNFEHLER(INDEX(Tabelle1!B:B;VERGLEICH(9;9999999999+Tabelle1!B:B));"")

Praktische Beispiele

Hier sind einige Beispiele zur Veranschaulichung:

  1. Kopieren von Spalte A bis zur letzten Zeile:

    Sub KopierenA()
        Dim lastRow As Long
        lastRow = Worksheets("Tabelle1").Cells(Rows.Count, "A").End(xlUp).Row
        Worksheets("Tabelle1").Range("A1:A" & lastRow).Copy Destination:=Worksheets("Tabelle2").Range("B1")
    End Sub
  2. Kopieren von mehreren Spalten:

    Sub KopierenMehrereSpalten()
        Dim lastRow As Long
        lastRow = Worksheets("Tabelle1").Cells(Rows.Count, "B").End(xlUp).Row
        Worksheets("Tabelle1").Range("B2:C" & lastRow).Copy Destination:=Worksheets("Tabelle2").Range("A1")
    End Sub

Tipps für Profis

  • Automatisierung: Du kannst die Subroutine auch automatisieren, indem du sie an ein Ereignis bindest, z.B. beim Öffnen der Datei oder beim Ändern eines Wertes.

  • Fehlerbehandlung: Füge eine Fehlerbehandlung in deinen VBA-Code ein, um unerwartete Fehler zu vermeiden. Beispiel:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
        MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich die letzte Zeile einer anderen Spalte ermitteln?
Um die letzte belegte Zeile einer anderen Spalte zu finden, ändere einfach den Spaltenbuchstaben in der Zeile, wo lastRow definiert wird, z.B. lastRow = Worksheets("Tabelle1").Cells(Rows.Count, "C").End(xlUp).Row.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der VBA-Code ist in den meisten Excel-Versionen (ab Excel 2007) kompatibel. Achte darauf, dass die Makros in deiner Excel-Installation aktiviert sind.

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