EXCEL - Seite einer Tabelle duplizieren

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

schmiddi1967  11.02.2015, 14:16

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:

Sub unten_eintragen()
Application.ScreenUpdating = False
Dim leereZeile
Range("A1:H50").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

Habe fertig :-))

1
Iamiam  11.02.2015, 22:42
@schmiddi1967

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?

1
Iamiam  11.02.2015, 23:02
@Iamiam

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

1
Tpr19 
Fragesteller
 12.02.2015, 08:40
@schmiddi1967

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ß

0
schmiddi1967  12.02.2015, 08:44
@Tpr19

Moin Moin, welche Variante meinst du jetzt.

Die oben ohne Formate und Formeln oder die unten?

1
schmiddi1967  12.02.2015, 12:42
@Tpr19

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.

1
Tpr19 
Fragesteller
 12.02.2015, 13:04
@schmiddi1967
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.

0
schmiddi1967  12.02.2015, 13:53
@Tpr19

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.

1
schmiddi1967  12.02.2015, 14:31
@schmiddi1967

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
1

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)

schmiddi1967  11.02.2015, 17:41

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.

2
Iamiam  11.02.2015, 22:32
@schmiddi1967

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.

1

Seite markieren, kopieren und hinter Seite 2 wieder einfügen.