Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1568to1572
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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")

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.
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
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
Anzeige
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
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
Anzeige
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
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

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

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige