Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeile x-mal duplizieren und einfügen

Zeile x-mal duplizieren und einfügen
25.03.2022 12:48:50
HaraldT
Hallo zusammen,
für einen Datenimport benötige ich ein Makro, das eine Excel-Tabellenzeile x-mal kopiert.
D.h. es soll einfach Zeile 1 x-mal unter Zeile 1 kopiert werden,l also x-mal eingefügt.
Dann soll Zeile die (ursprüngliche Zeile 2) wieder x-mal direkt unter die Zeile 2 kopiert werden.
Ich würde das händisch machen, allerdings ist das eine sehr große Tabelle, und ich muss das regelmäßig machen.
Vielen dank für euer Hilfe.
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile x-mal duplizieren und einfügen
25.03.2022 13:00:16
Daniel
Hi
Händisch geht das so recht einfach:
1. wenn die Liste kein Sortierkriterium enthält, fügst du eine Hilfsspalte mit der Zeilennummer an, am einfachsten über Einfügen - Reihe, oder per Formel =Zeile() oder einfach 1 und 2 in die ersten beiden Zellen schreiben und dann nach unten ziehen (Doppelklick auf rechte untere Ecke des Markierungsrahmens)
Bei Verwendung der Formel kopieren und als Wert einfügen nicht vergessen.
2. jetzt markiert und kopierst du den ganzen Block.
3. fürs Einfügen markiert du jetzt einen Zellbereich, der 10x so viele Zeilen hat. Das geht am einfachsten, in dem du die Zelladresse ins Namensfeld oben links eingibst.
Wenn also der Bereich A1:J45 ist, markiertes du darüber A1:J450 (x10 ist einfach) und fügst dann ein.
Excel vervielfacht hier die Werte.
4. um die richtige Reihenfolge zu bekommen, sortierst du nach der Hilfsspalte.
Gruß Daniel
Anzeige
AW: Zeile x-mal duplizieren und einfügen
25.03.2022 14:26:27
Daniel
Das kann man natürlich auch per Makro machen.
wenns schon eine Sortierspalte gibt die man verwenden kann so (Spalte beim Sortieren ggf anpassen):

Sub Duplizieren()
Const Faktor As Long = 10
With Range("A1").CurrentRegion
.Copy
.Resize(.Rows.Count * Faktor).PasteSpecial xlPasteAll
End With
Range("A1").CurrentRegion.Sort key1:=Cells(1, 1), order1:=xlAscending, Header:=xlNo
End Sub
wenn man das Sortierkriterium zum zurücksortieren noch einfügen muss, dann so:

Sub Duplizieren()
Const Faktor As Long = 10
With Range("A1").CurrentRegion
With .Columns(.Columns.Count + 1)
.Formula = "=Row()"
.Formula = .Value
End With
End With
With Range("A1").CurrentRegion
.Copy
.Resize(.Rows.Count * Faktor).PasteSpecial xlPasteAll
End With
With Range("A1").CurrentRegion
.Sort key1:=.Cells(1, .Columns.Count), order1:=xlAscending, Header:=xlNo
.Columns(.Columns.Count).ClearContents
End With
End Sub
Gruß Daniel
Anzeige
AW: Zeile x-mal duplizieren und einfügen
25.03.2022 14:47:52
HaraldT
Super, das funktioniert schon mal bestens, vielen Dank!
Die Script-Lösung schau ich mir später noch mal an, jedenfalls hast du mir sehr weitergeholfen....
AW: Zeile x-mal duplizieren und einfügen
25.03.2022 16:59:17
onur
Warum noch offen?
AW: Zeile x-mal duplizieren und einfügen
25.03.2022 13:05:34
UweD
Hallo

Sub kopieren()
Dim LR As Long, i As Long, Z1 As Integer, Sp As Integer, x As Integer
Z1 = 1 'ggf Überschrift beachten
Sp = 1 'Daten in Spalte A
x = InputBox("Anzahl der Kopien?", , 2)
If x = 0 Then Exit Sub
With Application
.ScreenUpdating = True
.Calculation = xlManual
End With
With ActiveSheet
LR = .Cells(.Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
For i = LR To Z1 Step -1
.Rows(i).Copy
.Rows(i + 1).Resize(x).Insert xlDown
Next
End With
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub
LG UweD
Anzeige
AW: Zeile x-mal duplizieren und einfügen
25.03.2022 13:12:14
ChrisL
Hi
Nur ein Tick von mir, alles mit Power-Query zu versuchen d.h. die Lösung muss man nicht unbedingt verwenden :)
https://www.herber.de/bbs/user/152031.xlsx
Import oder Export - kommt immer drauf an wo man steht. Wenn Daten regelmässig von einer externen Quelle nach Excel importiert werden, dann könnte eine PQ-Lösung tatsächlich sinnvoll sein.
cu
Chris
Anzeige
AW: eine weitere alternative Variante hierzu ...
25.03.2022 17:52:59
neopa
Hallo Chris,
... wäre der Einsatz der Funktion List.Repeat(). Dies hab ich mal bei Günther hier: http://www.excel-ist-sexy.de/pq-zeilen-vervielfaeltigen-wiederholen/ "aufgeschnappt"
Gruß Werner
.. , - ...
Anzeige
sehr schön, gefällt mir
25.03.2022 18:06:40
ChrisL
Hi Werner
Danke für den Input. List.Repeat() ist eleganter und wenn es mehrere Spalten zur Wiederholung gibt, dann wäre es Table.Repeat()
https://docs.microsoft.com/en-us/powerquery-m/table-repeat
Zudem fällt mir noch auf, dass man mit der geschweiften Klammer direkt eine einzelne Spalte als Liste extrahieren kann.
= List.Repeat({[Name]},[Anzahl])
(bisher habe ich in dieser Situation immer zuerst unnötigerweise gruppiert)
cu
Chris
Anzeige
AW: dazu nachgefragt ...
25.03.2022 19:47:44
neopa
Hallo Chris,
... sowohl mit Deiner Lösung als auch mit List.Repeat() kann man auch schon Datensätze mehrspaltiger Tabellen duplizierten.
Jedoch benötige ich mit List.Repeat() interaktiv zusammengestellt momentan für das hiesige Beispiel noch zwei Zusatzschritte gegenüber Deiner Lösung, siehe https://www.herber.de/bbs/user/152044.xlsx. Wie würdest Du die maßgeblich Anzahl gleich in die Anweisung mit List.Repeat() integrieren, so dass die Zusatzschritte entfallen?
Unklar ist mir auch noch, wozu Table.Repeat() wirklich gut ist. Kannst Du den Unterschied zu List.Repeat() an Hand der vorliegenden Beispieldatei mal bitte aufzeigen oder macht hier der Einsatz von Table.Repeat() gar keinen Sinn?
Ich schau erst morgen wieder hier nach. Wünsche jetzt erst einmal noch einen schönen Abend.
Gruß Werner
.. , - ...
Anzeige
Beispiele PQ Table.Repeat()
28.03.2022 08:41:49
ChrisL
Hi Werner
Hier die gewünschten Beispiele (jeweils fix verdoppelt 2xRepeat ohne Resultatsausgabe). In Bezug auf Performance machen die 3 Varianten m.E. keinen Unterschied.
Beispiel 1:
Wenn es mehrere Quellen gibt, dann tendiere ich darauf, erstmal nur für jede Quelle eine Verbindung zu erstellen. Danach eine neue leere Abfrage (oder eine neue Kombi). Durch die Trennung von Quellen und Abfragen kann m.E. die Übersichtlichkeit erhöht werden. Zudem kann man die Quellen bereinigen (z.B. Spalten selektieren, Typenkonvertierung) und dann für mehrere Abfragen wiederverwenden.
So mindestens die Theorie. Ganz konsequent mache ich es auch nicht u.a. weil das Vorgehen vielleicht für Fragesteller im Forum unklar sein könnte.
Beispiel 2:
In letzter Zeit habe ich damit experimentiert verschieden Funktionen zu verschachteln (hier direkt die Quelle in der Befehlszeile mit der Funktion umschlossen). Macht zwar die Abfrage/Code kürzer, aber wird dafür schnell undurchschaubar. Dennoch, wenn man den Code komprimieren möchte, wäre dies ein Ansatz.
Beispiel 3:
Direkte Programmierung im erweiterten Editor.
Abstrakte Beispiele:
https://www.herber.de/bbs/user/152084.xlsx
Anwendungsbeispiel:
https://www.herber.de/bbs/user/152085.xlsx
cu
Chris
Anzeige
AW: eine Nachfrage dazu ergibt sich mir noch ...
28.03.2022 10:17:00
neopa
Hallo Chris,
... aber zunächst, vielen Dank für Deine beiden Dateien. Das erklärt mir schon fast alles und ist eine gute Hilfe. :-)
Noch nicht verstanden hab ich jedoch, worin Du den Unterschied zwischen der Abfrage "Ergebnis1" und "Ergebnis3" siehst?
Gruß Werner
.. , - ...
AW: eine Nachfrage dazu ergibt sich mir noch ...
28.03.2022 13:00:47
ChrisL
Hi Werner
Gerne...
Beispiel 1 beinhaltet zwei separate Abfragen und Beispiel 3 nur eine Abfrage. Aber schlussendlich sind alle drei Varianten sehr nahe beieinander. Die Unterschiede sind letztlich nur Feinheiten und es ist eine Frage der persönlichen Präferenz z.B. ob man den Quellbezug und die Abfrage trennen will oder nicht; oder ob man lieber kürzt/verschachtelt oder Zwischenschritte machen will.
cu
Chris
Anzeige
AW: danke, hab eine Weile gebraucht owT
28.03.2022 14:04:09
neopa
Gruß Werner
.. , - ...
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in Excel x-mal duplizieren und einfügen


Schritt-für-Schritt-Anleitung

Um eine Excel-Zeile x-mal zu duplizieren und einzufügen, kannst du die folgenden Schritte ausführen:

  1. Hilfsspalte hinzufügen: Füge eine Hilfsspalte mit der Zeilennummer hinzu. Das kannst du entweder manuell tun oder mit der Formel =ZEILE(). Kopiere die Formel in die benötigten Zellen.

  2. Bereich markieren: Markiere den Bereich, den du duplizieren möchtest.

  3. Größeren Bereich auswählen: Wähle einen Zellbereich aus, der x-mal so viele Zeilen hat, wie du duplizieren möchtest. Wenn du zum Beispiel A1:J45 hast und 10x kopieren möchtest, wähle A1:J450.

  4. Einfügen: Füge den kopierten Bereich ein. Excel wird die Werte entsprechend vervielfältigen.

  5. Sortieren: Sortiere die Daten nach der Hilfsspalte, um die ursprüngliche Reihenfolge wiederherzustellen.

Alternativ kannst du auch ein VBA-Makro verwenden, um diesen Vorgang zu automatisieren.


Häufige Fehler und Lösungen

Fehler: Die Zeilen werden nicht korrekt kopiert.
Lösung: Stelle sicher, dass du den richtigen Zellbereich ausgewählt hast und dass du die Formel zur Ermittlung der Zeilennummer korrekt eingefügt hast.

Fehler: Excel stürzt ab oder reagiert nicht.
Lösung: Wenn du mit sehr großen Datenmengen arbeitest, kann Excel überlastet werden. Versuche, die Anzahl der zu duplizierenden Zeilen zu reduzieren.


Alternative Methoden

Eine andere Möglichkeit, Zeilen in Excel zu duplizieren, ist die Verwendung von Power Query. Mit Power Query kannst du Daten aus externen Quellen importieren und einfacher bearbeiten. Hier ist eine kurze Anleitung:

  1. Power Query öffnen: Gehe zu „Daten“ und wähle „Abfrage und Verbindung“ aus.

  2. Tabelle laden: Lade deine Daten in Power Query.

  3. Zeilen duplizieren: Verwende die Funktion List.Repeat() oder Table.Repeat(), um die Zeilen zu duplizieren. Damit kannst du auch mehrere Spalten gleichzeitig wiederholen.

  4. Daten zurückladen: Lade die bearbeiteten Daten zurück ins Excel-Arbeitsblatt.


Praktische Beispiele

Beispiel 1: VBA-Makro für das Duplizieren von Zeilen

Sub Duplizieren()
    Const Faktor As Long = 10
    With Range("A1").CurrentRegion
        .Copy
        .Resize(.Rows.Count * Faktor).PasteSpecial xlPasteAll
    End With
    Range("A1").CurrentRegion.Sort key1:=Cells(1, 1), order1:=xlAscending, Header:=xlNo
End Sub

Dieses Makro dupliziert die Zeilen in einer Tabelle um den Faktor 10.

Beispiel 2: Power Query für das Duplizieren von Zeilen

In Power Query kannst du die Funktion List.Repeat() wie folgt verwenden:

= Table.AddColumn(#"Vorherige Schritte", "Duplizieren", each List.Repeat({[Name]}, [Anzahl]))

Hier wird eine bestimmte Spalte dupliziert, basierend auf einer Anzahl.


Tipps für Profis

  • Verwende Power Query, wenn du regelmäßig Daten importierst und duplizierst. Es ist oft einfacher, komplexe Datenmanipulationen durchzuführen.
  • Wenn du mit VBA arbeitest, speichere deine Makros in einer separaten Datei, um sie bei Bedarf wiederverwenden zu können.
  • Überlege, ob du Excel-Formeln verwenden möchtest, um dynamische Duplikate zu erstellen, anstatt feste Werte zu kopieren.

FAQ: Häufige Fragen

1. Wie kann ich eine leere Zeile in Excel einfügen?
Um eine leere Zeile einzufügen, wähle die Zeile aus, unter der du die leere Zeile einfügen möchtest, klicke mit der rechten Maustaste und wähle „Zeile einfügen“.

2. Was ist der Unterschied zwischen 'Duplizieren' und 'Kopieren'?
'Duplizieren' bedeutet, eine Zeile mehrmals zu erstellen, während 'Kopieren' bedeutet, eine Zeile einmal zu erstellen und an einer anderen Stelle einzufügen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige