Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Übernahme von Zeilen in neues Register
#1
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!


Angehängte Dateien
.xlsx   Mappe1.xlsx (Größe: 9,38 KB / Downloads: 11)
Antworten Top
#2
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
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#3
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
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!
Antworten Top
#4
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!


Angehängte Dateien
.xlsx   Mappe1.xlsx (Größe: 9,82 KB / Downloads: 3)
Antworten Top
#5
Hallo sunny,

wieso hast du mit ein und demselben Thema einen neuen Thread aufgemacht? Ich habe die beiden Threads hier zusammengeführt.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#6
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!!
Antworten Top
#7
(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?
Antworten Top
#8
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).
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!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste