07.03.2016, 18:45 (Dieser Beitrag wurde zuletzt bearbeitet: 07.03.2016, 19:05 von sunny01.)
Folgende Aufgabe:
Ich habe ein Register mit Daten, welche ich zeilenweise in den jeweiligen Spalten ausgefüllt habe. Nun würde ich gerne am Ende dieser Zeilen eine zusätzliche Spalte einfügen, in welche ich jeweils eintrage, wie oft der jeweils vorangegangene Teil derselben Zeile untereinander in einem neuen Register angeordnet werden sollte. Das bedeutet z.B. nach Eintragung des Werts "5" sollte der vorangegangene Teil derselben Zeile fünfmal untereinander in einem neuen Register angeordnet werden. Wenn nun in der nächsten Zeile in dieser Spalte der Wert "6" eingetragen ist, sollte in demselben neuen Register, in welchem die vorher festgelegten fünf Zeilen eingefügt wurden unterhalb sechs Zeilen dieser Zeile eingefügt werden. Dasselbe gilt dann für alle nachfolgenden Zeilen.
Der Zweck wäre es, dass über die Anzahl der gewünschten Zeilen in der Ausgangstabelle jeweils eine neue Tabelle mit den gewünschten Zeilen in der gewünschten Anzahl generiert wird (sozusagen als Vorlage).
Beiliegend habe ich eine Testtabelle in der ich die Vorlagetabelle habe (=Tabelle 1) und manuell erstellt die Ergebnistabelle (=Tabelle 2). Für die manuell erstellte Tabelle würde ich nach einer Lösung suchen, die mir die Zeilen automatisch anhand der Einträge für die Anzahl in Spalte E der Tabelle 1 generiert.
die wirst du sicherlich bekommen, wenn du uns eine Beispieltabelle, die deinem Original gleichen muss, hochlädst. Trage dort händisch dein Wunschergebnis ein. So funktioniert das Hochladen: http://www.clever-excel-forum.de/Thread-...ng-stellen
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Sub Vervielfachen()
Dim lRowS As Integer, lRowD As Integer, ZeS As Integer, ZeD As Integer
Dim wksSrc As Worksheet, wksDst As Worksheet, rngZe As Range
Set wksSrc = Sheets("Tabelle1")
Set wksDst = Sheets("Tabelle3")
lRowS = wksSrc.Cells(Rows.Count, 1).End(xlUp).Row
wksSrc.Range("A1:D1").Copy wksDst.Cells(1, 1)
For ZeS = 2 To lRowS
Set rngZe = wksSrc.Range(Cells(ZeS, 1), Cells(ZeS, 4))
rngZe.Copy
lRowD = wksDst.Cells(Rows.Count, 1).End(xlUp).Row + 1
For ZeD = lRowD To lRowD + wksSrc.Cells(ZeS, 5) - 1
wksDst.Cells(ZeD, 1).PasteSpecial xlPasteValues
Next ZeD
Next ZeS
Application.CutCopyMode = False 'Macht sich besser :-)
End Sub
Beste Grüße Günther
Excel-ist-sexy.de …schau doch mal rein! Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Ich habe ein Register mit Daten, welche ich zeilenweise in den jeweiligen Spalten ausgefüllt habe. Nun würde ich gerne am Ende dieser Zeilen eine zusätzliche Spalte einfügen, in welche ich jeweils eintrage, wie oft der jeweils vorangegangene Teil derselben Zeile untereinander in einem neuen Register angeordnet werden sollte. Das bedeutet z.B. nach Eintragung des Werts "5" sollte der vorangegangene Teil derselben Zeile fünfmal untereinander in einem neuen Register angeordnet werden. Wenn nun in der nächsten Zeile in dieser Spalte der Wert "6" eingetragen ist, sollte in demselben neuen Register, in welchem die vorher festgelegten fünf Zeilen eingefügt wurden unterhalb sechs Zeilen dieser Zeile eingefügt werden. Dasselbe gilt dann für alle nachfolgenden Zeilen.
Der Zweck wäre es, dass über die Anzahl der gewünschten Zeilen in der Ausgangstabelle jeweils eine neue Tabelle mit den gewünschten Zeilen in der gewünschten Anzahl generiert wird (sozusagen als Vorlage).
Beiliegend habe ich eine Testtabelle in der ich die Vorlagetabelle habe (=Tabelle 1) und manuell erstellt die Ergebnistabelle (=Tabelle 2). Für die manuell erstellte Tabelle würde ich nach einer Lösung suchen, die mir die Zeilen automatisch anhand der Einträge für die Anzahl in Spalte E der Tabelle 1 generiert.
12.03.2016, 12:07 (Dieser Beitrag wurde zuletzt bearbeitet: 12.03.2016, 12:08 von Nixblick0815.)
(07.03.2016, 20:56)GMG-CC schrieb: Moin,
ich löse solch eine Aufgabe per VBA:
Code:
Option Explicit
Sub Vervielfachen()
Dim lRowS As Integer, lRowD As Integer, ZeS As Integer, ZeD As Integer
Dim wksSrc As Worksheet, wksDst As Worksheet, rngZe As Range
Set wksSrc = Sheets("Tabelle1")
Set wksDst = Sheets("Tabelle3")
lRowS = wksSrc.Cells(Rows.Count, 1).End(xlUp).Row
wksSrc.Range("A1:D1").Copy wksDst.Cells(1, 1)
For ZeS = 2 To lRowS
Set rngZe = wksSrc.Range(Cells(ZeS, 1), Cells(ZeS, 4))
rngZe.Copy
lRowD = wksDst.Cells(Rows.Count, 1).End(xlUp).Row + 1
For ZeD = lRowD To lRowD + wksSrc.Cells(ZeS, 5) - 1
wksDst.Cells(ZeD, 1).PasteSpecial xlPasteValues
Next ZeD
Next ZeS
Application.CutCopyMode = False 'Macht sich besser :-)
End Sub
Dann kommt bei mir:
Code:
Laufzeitfehler 13: Typen unverträglich
Debuggen:
Code:
For ZeD = lRowD To lRowD + wksSrc.Cells(ZeS, 5) - 1