Clever-Excel-Forum

Normale Version: Übernahme von Zeilen in neues Register
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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.

Bitte um Vorschläge für diese Aufgabe!
Hi sunny,


Zitat:Bitte um Vorschläge für diese Aufgabe!

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

Bitte um Vorschläge für diese Aufgabe!
Hallo sunny,

wieso hast du mit ein und demselben Thema einen neuen Thread aufgemacht? Ich habe die beiden Threads hier zusammengeführt.
Vielen Dank für die Angabe des entsprechenden Codes, das funktioniert nun auch in meiner Ursprungstabelle. Dazu habe ich noch zwei weitere Fragen:

- Gibt es noch eine Möglichkeit, die ursprüngliche Formatierung der Zellen in das neue Register mitzuübernehmen?

- Kann das Anlegen eines neuen Registers für die kopierten Zellen bereits im Code integriert werden?

Bitte um Antwort diesbezüglich!!
(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


Was bedeutet dies?
Vermutlich hast du mehr als reichlich Zeilen ... Ersetze in

Code:
Dim lRowS As Integer, lRowD As Integer, ZeS As Integer, ZeD As Integer


überall das Integer durch Long, dann sollte es hinhauen (hat es bei meinem Test ja auch).dann sollte es hinhauen (hat es bei meinem Test ja auch).