Gibt es so ein Makro, was unterschiedlich große Tabellen untereinander kopiert?
Ich habe 5 Tabellenblätter in MS Excel. In 4 befinden sich jeweils eine Tabelle. Jede Tabelle hat gleich viele Spalten. Diese erstrecken sich von Spalte A - H. Diese Tabellen sind aber unterschiedlich lang. Jede Spalte einer Tabelle ist gleich lang. Im Grunde genommen hat jede Tabelle die Form eines Rechtecks, nur dass das Rechteck bei der einen Tabelle länger ist als bei der anderen.
Problem: Ich möchte die Tabellen in Tabellenblatt 5 einfügen und zwar direkt untereinander ohne Leerzeile. Deswegen benötige ich ein Makro was erkennt wann die Tabelle von Tabellenblatt 1 aufhört, sodass die Tabelle von Tabellenblatt 2 direkt unter die Tabelle 1 kopiert werden kann. Dann muss das Makro erkennen wie groß die Tabellen 1 und 2 zusammen sind, sodass die Tabelle 3 auch direkt unter Tabelle 2 kopiert werden kann und dasselbe mit Tabelle 4.
Danke für eure Antworten :)
1 Antwort
Arbeitest du mit Makro Aufzeichnen? Dann einfach in das 5. Blatt gehen und die Aufzeichnung beginnen. Dann in das erste Blatt gehen, die Zelle A1 markieren, dann Strg A drücken, um die Tabelle zu markieren. Diese mit Strg C kopieren und in das 5. Blatt einfügen. Dann auf das 2. Blatt gehen und die gleiche besschrieben Abfolge machen. Zum Schluss im 5. Blatt bleiben und die Aufzeichnung beenden. Dann hast du ein Makro aufgenommen. Das kannst du dann hinter einen Aktionsknopf legen und diesen Ablauf immer wieder automatisch durchführen.
Ich hoffe, das hilft dir.
Danke, hat mir bei meiner Suche weiter geholfen :)
@Subopt: Range(...).end(xldown : Das geht allerdings nur, wenn man die längste Spalte kennt und diese zwischendrin keine Leerzellen enthält.
Wegen der Leerzellen sicherer ist auch da Range("A65000").end(xlup) ggf. .row (bzw statt 65000 die maximale Zeilennummer des Blattes)
der beste Befehl dafür ist Activesheet.usedrange.specialcells(xllastcell) und ggf. .row
Das kann man in eine Variable schreiben und damit weitermachen.
Range("A65000").end(xlup)
Das hat das gleiche Problem wie xldown, dass man die längste Spalte kennen muss.
Ja, UsedRange geht auch. Das umfasst die erste Zelle links oben, die gefüllt ist bis zur letzten Zelle in der rechten unteren Ecke die gefüllt ist und mit der ersten Zelle zusammenhängend ist.
.Row ist möglich, aber meiner Meinung nach hier nicht nötig.
Danke, du hast mir sehr geholfen. Von der Tastenkombination STRG + A habe ich noch nicht gewusst. Das Problem ist, die Größe der Tabelle ändert sich manchmal und dann hilft mir das Aufzeichnen nicht sehr viel. Vielleicht könnte sich das Makro ausrechnen ab wo es die nächste Tabelle einfügen soll. Man hat z. B. die Zellen A1:H650 mit der Tastenkombination markiert und das Makro soll rechen A650 + 1 nach unten. Verstehst du was ich meine? :)
Du kannst mit Range(...).End(xlDown) oder so ähnlich an das Ende der Tabelle springen. Mit Offset(1,0) gehst du eine Zeile tiefer, wo du dann die neuen Daten einfügen kannst.
Kannst du mir das genauer erklären? Ich kenne diese Befehle nicht.
wenn Du die längste Spalte der Tabrelle kennst (z.B.A) und A lückenlos gefüllt ist, dann kannst du auch so vorgehen: Die zweite Tabelle kopieren, den Cursor in den beschriebenen Bereich automatisch setzen (zB nach A2) lassen, und dann den Befehl:
Activecell.End(xldown).offset(1, 0).paste
(oder .pastespecial(xlvalues)
das macht ja nichts. solche Fragen stellt man sich ja öfter, die sind ja zeitlos. ;)
da hast du natürlich recht. da habe ich nicht weit genug gedacht. dann wirst du um vba nicht rumkommen. vielleicht hilft dir das Stichwort dynamische Tabellen weiter.