EXCEL - Seite einer Tabelle duplizieren
Moin,
ich habe folgendes Problem:
Ich habe in Excel eine "Tabelle1", in der zwei Seiten mit Tabelle sind. Ich möchte die zweite Seite, bestenfalls mit Hilfe eines Befehls, im SELBEN Tabellenreiter, also auf Seite 3 :) duplizieren, falls notwendig auch mehrfach auf den Seiten 4, 5, ... gibt es dafür eine Lösung? Bisher finde ich nur die Möglichkeit in einen weiteren Tabellenreiter hinein zu kopieren, was aber nicht Sinn und Lösung meines Problems wäre.
Schon mal vorab Vielen Dank!
3 Antworten
Jo das geht ganz einfach.
Du musst nur in die letzte Zelle in Spalte A auf Seite 1 einen Punkt machen und dann den gesamten Bereich mit folgendem Makro wieder in die nächste freie Zelle in Spalte A kopieren lassen. Das kannst du so oft machen wie du Seiten brauchst. Wichtig ist nur das du im Code den Bereich (hier A1:H50) anpasst, denn ich weiß ja nicht wieviel Zeilen und Spalten du hast.
Sub unten_eintragen()
Application.ScreenUpdating = False
Dim leereZeile
Range("A1:H50").Copy
leereZeile = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A" & leereZeile & ":A" & leereZeile).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = True
Application.ScreenUpdating = True
MsgBox ("Tabelle wurde erfolgreich unten eingetragen")
End Sub
Achja, ich würde mir am besten eine Schaltfläche anlegen und auf das Makro verweisen.
Das ohne Formate hab ich nirgends rauslesen können, man kann die Formate aber auch nachträglich löschen, am einfachsten, indem man eine Standard-Zelle kopiert und per Formatpinsel deren (sozusagen Nicht-)Format auf die Zielzellen -alle auf einmal- überträgt.
Oder in die Benutzerleiste links oben neben dem Widerrufen-/Wiederholen-Befehl das Icon mit dem Format-Radiergummi reinschiebt.
Das geschilderte Problem kann aber eigentlich nur -als Problem- auftauchen, wenn Formelbezüge auf ausserhalb der kopierten Zelle verweisen, also müssen Formeln erhalten bleiben (was mit pastespecial xlformulas auch ginge), oder hab ich da was grundlegend falsch verstanden?
"...was mit pastespecial xlformulas auch ginge ..." stimmt nicht, wenn sie unverändert (also nicht relativ zum neuen Ort angepasst-) eingefügt werden sollen.
Dazu bräuchte es eine Schleife
For Each c in Bereich
Variable = c.formula
C.offset(Zeilen, Spalten).formulalocal = Variable
Next c
oder so ähnlich
Moin!
Dein Vorschlag klappt richtig gut, vielen Dank erstmal dafür. Lediglich eine Sache passt noch nicht ganz, das ist die Größe der einzelnen Zeilen und Spalten. Ist es möglich, dass sich diese mit anpassen?
Gruß
Moin Moin, welche Variante meinst du jetzt.
Die oben ohne Formate und Formeln oder die unten?
Ok, dann gib mir mal dein Makro wie es jetzt bei dir aussieht. Dann baue ich das gleich richtig da mit ein, sonst musst du nämlich wieder alles richtig anpassen damit er bei dir nicht den falsch Bereich nimmt.
Sub unten_eintragen()
Application.ScreenUpdating = False
Dim leereZeile
Range("A13:C23").Copy
leereZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A" & leereZeile & ":A" & leereZeile).Select
ActiveSheet.Paste
Application.CutCopyMode = True
Application.ScreenUpdating = True
MsgBox ("Tabelle wurde erfolgreich unten eingetragen")
End Sub
Ich habe in der letzten Zelle von Spalte A, also in A23, eine Schlatfläche hinterlegt und verweise damit auf das Makro, in der Hoffnung, dass diese Schaltfläche auch wieder auf der jeweils nächsten Seite wieder dargestellt wird und ich damit wieder eine neue Seite kreieren kann.
Es gibt da jetzt zwei Möglichkeiten die ich gerne mit dir bequatschen würde. Gehe mal bitte in mein Profil und nutze da eine Kontaktmöglichkeit von.
Direkt in das Makro einbauen sehe ich da eher weniger gut an. Warum erkläre ich dir dann.
Nachtrag:
Wir haben jetzt folgendes Makro vorher laufen lassen und damit die Zeilen bis 1000 als erstes so angelegt wie die Tabelle auf Seite 2 ist. Dann kann das andere normal genutzt werden. Das haben wir deshalb gemacht, weil das mit einbauen zum resultat hatte das es immer ewig gebraucht hätte bis die neue Seite fertig gewesen wäre.
Sub zeilen_höhe()
Application.ScreenUpdating = False
For i = 13 To 1000
x = Cells(i, 1).RowHeight
Cells(i + 11, 1).RowHeight = x
Next i
Application.ScreenUpdating = True
MsgBox ("Zeilenhöhe wurde angepasst")
End Sub
Füge ein leeres Blatt ein, kopiere Deinen Bereich und füge ihn an dieselbe Stelle im leeren Blatt ein (also zB AA5:AZ666 nach AA5 im bisher leeren Blatt). Ohne die Markierung aufzuheben (aus Bequemlichkeit, nicht zwingend) schneidest Du das gleich wieder aus und fügst es dort ein, wo Du es brauchst.
Alle Bezüge nach ausserhalb der kopierten Zelle sollten jetzt geblieben sein, die innerhalb sowieso.
Bezüge auf den Kopierten Teil beziehen sich allerdings weiterhin auf den verbliebenen Bereich, Bezüge HIN UND ZURÜCK zu duplizieren geht so nicht (und im engeren Sinne prinzipiell nicht, Du kannst nur über suchen und ersetzen die Namen externer Tabellenblatt-Bezüge ändern, nach dem Versetzen aufs leere Blatt allerdings auch die innerhalb, man muss aber genau überlegen, was man eigentlich will: xl verlangt klare Entscheidungen)
DH!
Das ist eine gute Idee, nur ich vermute das du sein Vorhaben eventuell falsch verstanden hast.
Er will die Tabelle 2 die sich im gleichen Tabellenblatt auf der 2 Seite befindet nach unten auf die 3 Seite kopieren und nicht in einem neuen Tabellenblatt.
im SELBEN Tabellenreiter, also auf Seite 3. Bisher finde ich nur die Möglichkeit in einen weiteren Tabellenreiter hinein zu kopieren, was aber nicht Sinn und Lösung meines Problems wäre.
wenn ich jetzt nicht DICH missverstehe, geht das trotzdem genauso:
im ursprünglich leeren Tabellenblatt die Kopie nach unten (rechts? ) schieben,
(halt da, wo im ersten Blatt die Seite 3 ist),
die Kopie ausschneiden und auf Seite 3 wieder einfügen.
Die Leertabelle kann dann wieder gelöscht werden.
Seite markieren, kopieren und hinter Seite 2 wieder einfügen.
Nachtrag:
Ändere oben in der Formel mal das:
leereZeile = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
in
leereZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
damit bist du Tabellen unabhängig.
Und dann ist noch wichtig das keine Formatierungen oder Formeln mit übertragen werden. Wenn du das willst musst du folgende Formel nehmen:
Habe fertig :-))