Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Datensätze mittels VBA mehrfach kopieren





Frage

Hallo, Ich habe z.B. in "Tabelle 1" folgende drei Datensätze: -------------A---------------B---------------C 1 ----- Vorname --- Nachname --- Anzahl 2 ------- Sepp -------- Muster --------- 3 3 ------- Franz -------- Klein ----------- 1 4 ------- Peter -------- Maier ----------- 2 Nun möchte ich die einzelnen Datensätze in die "Tabelle 2" so oft ausgeben, wie es in der Spalte C angeben ist. Das Ziel wäre nun in etwa die folgendes in der "Tabelle 2" zu generieren: -------------A---------------B---------------C 1 ----- Vorname --- Nachname 2 ------- Sepp ------- Muster 3 ------- Sepp ------- Muster 4 ------- Sepp ------- Muster 5 ------- Franz ------- Klein 6 ------- Peter ------- Maier 7 ------- Peter ------- Maier Weiß da jemand von euch Rat wie sowas zu lösen ist? Danke im voraus für euere Hilfe mfg Peter

Antwort 1 von Hajo_Zi

Hallo Peter,

Option Explicit

Sub kopieren()
Dim LoI As Long
Dim LoJ As Long
Dim LoK As Long
Dim LoLetzte As Long
´ unabhängig von Excelversion für Spalte A (1)
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Range("A1:B1").Copy Worksheets("Tabelle5").Range("A1")
LoJ = 2
For LoI = 2 To LoLetzte
For LoK = 1 To Cells(LoI, 3)
Range(Cells(LoI, 1), Cells(LoI, 2)).Copy Worksheets("Tabelle5").Cells(LoJ, 1)
LoJ = LoJ + 1
Next LoK
Next LoI
End Sub

Gruß Hajo

Antwort 2 von urbi

Hallo Hajo,

Ich danke dir für die prompte Antwort.
Der Code läuft natürlich einwandfrei.

Super wäre wenn du den Code noch ein wenig detailierter kommentieren könntest.
Somit würden vielleicht meine Chancen, den VBA-Code zumindest einmal ansatzweise zu erlernen, nicht schlecht stehen. ;-)

nochmals Danke für deine Mühen
mfg Peter

Antwort 3 von Hajo_Zi

Hallo Peter,

der Code ist doch nicht kompliziert, man muß doch nur Zeile für Zeile durchgehen.
Erst den Tabellenkopf kopieren, dann eine Schleife für die Namen und darin eine Schleife für die Anzahl.

Gruß Hajo

Antwort 4 von urbi

Hallo Hajo,
Zitat:
der Code ist doch nicht kompliziert

Tja - aus deiner Sicht ist das sicher so aber ......

Ich hätte gerne noch eine dritte Daten-Spalte in "Tabelle1 " hinzugefügt, welche auf die "Tabelle2" mitkopiert werden soll. ( Vorname - Nachname - Adresse - Anzahl)
und
die "Tabelle2" sollte vor der Abarbeitung des Makro-Filters vollständig gelöscht werden um Daten aus vorigen Abfragen zu entfernen.

mfg Peter

Antwort 5 von Hajo_Zi

Hallo Peter,

solche Veränderungen sollte man kurzfristig rüber bringen. Die Datei muß immer wieder nachgbaut werden. Es besteht bei mir lkein Grund solche Beispiel aufzuheben und 95% meines Codes teste ich bevor er gepostet wird.

Option Explicit

Sub kopieren()
Dim LoI As Long
Dim LoJ As Long
Dim LoK As Long
Dim LoLetzte As Long
´ unabhängig von Excelversion für Spalte A (1)
´ letzte Zeile in Spalt A der Quelltabelle feststellen
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Worksheets("Tabelle5").Cells.ClearContents ´ Zieltabelle löschen
Range("A1:C1").Copy Worksheets("Tabelle5").Range("A1") ´ Tabellenkopf in Zieltabelle kopieren
LoJ = 2 ´ Anfangszeile in Zieltabelle für die Datensätze
For LoI = 2 To LoLetzte ´ Schleife fü die Namen
For LoK = 1 To Cells(LoI, 4) ´ Schleife für die Anzahl laut Spalte D (4)
´ Zelle der Quelltabelle Spalte A (1) bis C (3) in Zieltabelle kopieren
Range(Cells(LoI, 1), Cells(LoI, 3)).Copy Worksheets("Tabelle5").Cells(LoJ, 1)
LoJ = LoJ + 1 ´ Zeilenzähler für Zielttabelle um 1 erhöhen
Next LoK
Next LoI
End Sub

Gruß Hajo

Antwort 6 von urbi

Super, Ich konnte nun alle Anpassungen bezüglich Spaltenänderungen selber vornehmen und es funktioniert auch einwandfrei.

Jetzt bleibt nur noch eines...
und zwar "zusätzlich Zeilen" über den Überschriften (z.B. für eine Tabellenüberschrift)
Beim Einfügen einer zusätzlichen Zeile erscheint der Debugger mit folgender gelb hinterlegten Zeile:
Zitat:
For LoK = 1 To Cells(LoI, 3) ´Schleife für die Anzahl laut Spalte C

Wie geb ich hier den Schleifen-Beginn für die "Zeile" vor?

mfg Peter

Antwort 7 von Hajo_Zi

Hallo Peter,

ich hatte es schon in meinem letzten Beitrag geschrieben, das Fragen kurzfristig erfolgen sollen.

Wenn Du Dir meinen Beitrag ansiehst habe ich immer den kompletten Code gepostest, was Du nicht für notwendig hälst. Ich lehne es aber ab über das Internet auf fremde Rechner vz7u schauen. Da mußt Du die Lösung schon selber finden.

Gruß Hajo