Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
708to712
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
708to712
708to712
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Variables Spaltenende kopieren

Variables Spaltenende kopieren
14.12.2005 11:31:28
Thias
Hallo Forum-Gemeinde,
ich habe mal wieder ein copy-Problem.
Ich möchte gerne die letzten 20 Werte einer Spalte in ein anderes Tabellenblatt kopieren. Das Problem (für mich) ist dabei, dass die Werte in der Spalte immer unterschiedlich lang sind. Die letzten 20 Werte sind also nie an der gleichen Stelle.
Zuerst hatte ich die Idee, mittels
For vZeile = 11 To Sheets(vSheet).Cells(11, vSpalte).End(xlDown).Offset(rowOffset:=20, columnOffset:=0).Row
eine Art Offset vom Ende der Tabelle aus auf den letzen Wert zu geben. Aber das funktioniert leider nicht.
Daher weiß ich nun nicht weiter, welche Möglichkeiten es noch geben könnte. Wahrscheinlich ist der Gedankenansatz mit dem Offset schon falsch...
Vielleicht kann mir einer der Experten weiterhelfen.
Gruß Thias

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variables Spaltenende kopieren
14.12.2005 11:35:42
Unbekannter
In dem Beispiel kopiert es von A1 bis zur letzten beschrieben Zeile der Spalte

Sub zählen()
Range ("a" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row).Copy
End Sub

Gruß UN1
AW: Variables Spaltenende kopieren
14.12.2005 11:45:59
Thias
Hallo U N Eins,
da meine Datenspalte ja jedesmal unterschiedlich lang ist, kann ich leider keinen festen Offset o.ä. bennen, um von dort aus bis zum Ende zu kommen.
Vom Ansatz her würde ich denken, dass ich das Ende der Spalte finden, und von dort +20 nach oben gehen muss, um von dort aus wiederum n-mal nach unten die Werte ins neue sheet zu kopieren.
Hhhmm - zugegebenermaßen nicht gerade sehr verständlich ausgedrückt... :-)
Anzeige
AW: Variables Spaltenende kopieren
14.12.2005 11:49:31
Reinhard
Hi Thias,
bis=range("A65536").end(xlup).row
von=bis-19
range(cells(von,1),cells(bis,1)).copy
Gruß
Reinhard
ps:Das Forum lebt auch von Rückmeldungen
AW: Variables Spaltenende kopieren
14.12.2005 12:49:51
Thias
Hallo Reinhard,
der Debugger bringt mir immer an der Stelle
range(cells(von,1),cells(bis,1)).copy
einen Laufzeitfehler '1004'. Habe es auch schon mit
Worksheets("Tabelle1").Activate.range(cells(von,1),cells(bis,1)).copy
versucht, aber der Fehler bleibt immer gleich. Was läuft denn da noch verkehrt? Von der Syntax her müsste das doch korrekt sein...?
Auch bei dem Tipp von UN1 bleibt der Debugger beim Range Objekt hängen!
Watt nu?
Anzeige
AW: Variables Spaltenende kopieren
14.12.2005 17:15:17
Reinhard
Hi Thias,
wenn der Debugger gelb ist, fahre mal mit der Maus über von und bis, was wird angezeigt? 0?
Gruß
Reinhard
ps:Das Forum lebt auch von Rückmeldungen
AW: Variables Spaltenende kopieren
14.12.2005 17:59:56
Thias
Hallo Reinhard,
das mit dem Mauszeiger hab' ich nicht ausprobiert. Habe mir stattdessen einfach die Inhalte der Variablen mittels der MsgBox-Funktion ausgeben lassen und bin dem Problem so auf die Spur gekommen. Aber trotzdem nochmals vielen Dank für den Tipp mit dem Debugger. Werd's beim nächsten mal ausprobieren!
Schönen Feierabend wünsche ich!
AW: Variables Spaltenende kopieren
14.12.2005 11:59:11
Unbekannter
Den Anfang musste selbst eingeben.Es sein denn das dieser ein Merkmal besitzt was ihn immer als Anfang kennzeichnet,dann können wir nach dem suchen lassen.

Sub zählen()
ende = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
anfang = ende - 20
Range("a" & anfang & ":" & "a" & ende).Copy
End Sub

Anzeige
AW: Variables Spaltenende kopieren
14.12.2005 12:55:42
Unbekannter
Das da ein Fehler kommt is ja auch klar,sag mir mal bitte welche Zelle ich anspreche wenn ich 10 - 20 Rechne?.Du musst den Anfang so abändern wie du es brauchst.
AW: Variables Spaltenende kopieren
14.12.2005 13:16:22
Thias
Dann verstehe ich den Code anscheinend noch nicht richtig!
ende = Range("A65536").End(xlUp).Row
'Der Variablen ende wird die Nummer der letzten Zelle von Spalte A zugewiesen
anfang = ende - 20
'Der Variablen anfang wird wird die Nummer der letzten Zelle von Spalte A minus 20 zugenwiesen
Range("a" & anfang & ":" & "a" & ende).Copy
'Der Bereich von a irgendwas bis a ende wird kopiert
So verstehe ich den Code, also warum muss ich den Anfang abändern? Mit Anfang meinst Du die Variable anfang?
Anzeige
AW: Variables Spaltenende kopieren
14.12.2005 13:37:52
P@ulchen
Hallo Thias,
versuch mal so:


Sub kopieren()
vSheet = 1
Ende = IIf(IsEmpty(Sheets(vSheet).Range("A65536")), Sheets(vSheet).Range("A65536").End(xlUp).Row, 65536)
If Ende > 19 Then Sheets(vSheet).Range("A" & Ende - 19 & ":A" & Ende).Copy
End Sub


Gruß aus Leipzig
P@ulchen
Anzeige
AW: Variables Spaltenende kopieren
14.12.2005 14:28:27
Thias
Hi P@aulchen,
mit Deiner Hilfe bin ich nun zum Glück zum Ergebnis gekommen, wenn auch ein ganz klein wenig anders. Aber wenigstens verstehe ich so, was da abläuft.
Meine Lösung:
ende = Worksheets("Tabelle1").Range("B65536").End(xlUp).Row
anfang = ende - 19
Worksheets("Tabelle1").Range("B" & anfang & ":B" & ende).Copy (Worksheets("Tabelle2").Range("B3"))
Vorher habe ich die ganze Zeit versucht, an Reinhards Tipp angelehnt, folgendes zum laufen zu bringen:
ende = Worksheets("Tabelle1").Range("B65536").End(xlUp).Row
anfang = ende - 19
Worksheets("Tabelle1").Range(Cells(anfang, 1), Cells(ende, 1)).Copy (Worksheets("Tabelle2").Range("B3"))
Das klappt aber nicht, auch wenn ich nicht verstehe, warum.
Danke, und Grüße nach Läpzsch! :-)
Anzeige
AW: Variables Spaltenende kopieren
14.12.2005 15:07:06
P@ulchen
Hallo Thias,
nur zwei kleine Hinweise:
1. ende = Worksheets("Tabelle1").Range("B65536").End(xlUp).Row bringt einen Fehler, falls die letzte belegte Zelle B65536 ist.
Deshalb besser:
Ende = IIf(IsEmpty(Range("A65536")), Range("A65536").End(xlUp).Row, 65536)
2. anfang = ende - 19
Worksheets("Tabelle1").Range(Cells(anfang, 1), Cells(ende, 1)).Copy (Worksheets("Tabelle2").Range("B3")) bringt einen Fehler, wenn die letzte belegte Zeile kleiner 20 ist.
Deshalb besser:
If ende &gt 19 Then Worksheets("Tabelle1").Range("B" & anfang & ":B" & ende).Copy (Worksheets("Tabelle2").Range("B3"))
Gruß aus Leipzig
P@ulchen
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige