PDA

Vollständige Version anzeigen : Excel Zeile mehrfach duplizieren (Je nach Wert in Spalte "Anzahl")


Hape99
04.12.2016, 06:05
Hallo Zusammen!

Ich hab folgendes Problem.
Ich möchte aus einer Excel Tabelle eine 2. Tabelle generieren
in der je nach Spalte "Anzahl" die gleichen Zeilen mehrfach angeführt sind.
-> siehe Beispiel:

Ausgangs-Tabelle:
Art.Nr. Bezeichnung Anzahl
2317 Schrank 2
2296 Couch 4
1723 Tisch 1
2256 Regal 3

Gewünschtes Ergebnis (Je nach Spalte Anzahl oben, die gleiche Zeile mehrfach):
2317 Schrank 2
2317 Schrank 2
2296 Couch 4
2296 Couch 4
2296 Couch 4
2296 Couch 4
1723 Tisch 1
2256 Regal 3
2256 Regal 3
2256 Regal 3



Hab leider keine Ahnung wie ich das machen kann.
Bin deshalb für Hinweise sehr Dankbar.
Hape

aloys78
04.12.2016, 07:34
Hallo Hape,
Hab leider keine Ahnung wie ich das machen kann.
zB mit einer VBA-Lösung - siehe Anhang !

Gruß
Aloys

HS(V)
04.12.2016, 10:56
Oder.
Sub hsv()
Dim sn, st, j As Long, c00 As String
sn = Tabelle1.Cells(1).CurrentRegion
For j = 2 To UBound(sn)
c00 = c00 & Replace(String(sn(j, 3), " "), " ", " " & j)
Next
st = Application.Transpose(Split(Trim(c00)))
Tabelle2.Cells(1).Resize(UBound(st), 3) = Application.Index(sn, st, Array(1, 2, 3))
End Sub

Hape99
04.12.2016, 19:05
Viele Vielen Dank Aloys!

Es gibt noch selbstlose Menschen auf dieser Welt.
Ich muss für meine Frau ca. 3000 Etiketten drucken und wollte schon
fast händisch die Tabelle duchgehen um die Duplikate zu machen.
(Als Basis für Word Seriendruck)
Excel und Word ist mir halbwegs klar.
VBA leider nicht so...

Aber deine Lösung ist so perfekt,
dass ich es auch weiterhin nicht lernen werden ;-)

Danke nochmals
Hape

Hape99
04.12.2016, 19:15
Danke auch dir Harry!

Die Lösung von Aloys war so perfekt - das ich deinen Vorschlag
nicht mehr weiter versucht habe.
Wie gesagt, VBA ist nicht meine Stärke.

Danke drotzdem.
Hape

erpe
05.12.2016, 12:36
Hallo Ungeduldiger,
http://www.ms-office-forum.net/forum/showthread.php?t=337812

Solltest vielleicht mal in deinem ersten Threat pushen, bevor du einen neuen zum gleichen Thema aufmachst.

Gruß
Rainer

Hape99
05.12.2016, 21:20
Entschuldigung Rainer!
Ich dachte meine Fragestellung beim ersten Threat war nicht gut formuliert
"Etiketten drucken mit Word..." und habe deshalb die Frage neu
formuliert (nur auf excel bezogen).
Sorry wenn ich dir dadurch Arbeit gemacht habe !
Ich werde beim nächsten mal deine Kritik berücksichtigen.
Was aber meist du genau mit "ich soll meinen Threat pushen" ?
Löschen, "nach vorne rücken (wie?)" , oder einfach noch etwas zuwarten... ?
Danke für deine Mühe
HP

erpe
06.12.2016, 08:04
Moin HP,
Danke für die Antwort.
Pushen meint: mal nachfragen, ob es keine Lösung/Idee/Codeschnippsel etc. gibt.
Danach rückst du wieder nach oben.

Schönen Tag noch
Rainer

xyzchristianxyz
06.12.2016, 16:33
Ich möchte gerne das Script von Aloys ändern, damit die Anzahl in einer andere Reihe (I) steht. Der Bereich geht nochmals bis zu einem anderen Bereich (T). Wie passe ich das Script entsprechend an?

aloys78
06.12.2016, 16:54
Hallo xyz...,
Ich möchte gerne das Script von Aloys ändern, damit die Anzahl in einer andere Reihe (I) steht.
Nur zu - meine Zustimmung hast Du.

Solltest Du Unterstützung brauchen, dann stelle eine Beispieldatei zur Verfügung.

Gruß
Aloys

xyzchristianxyz
06.12.2016, 17:10
Hi Aloys,
danke schonmals für die schnelle Antwort.
Ich habe im Anhang eine verkleinerte Version der Stückliste.

Ich verstehe noch nicht ganz was die einzelnen Befehle machen.

Die Lösung scheint aber sehr ähnlich zu deiner zu sein.

Für jegliche Hilfe bin ich dankbar.

Liebe Grüsse
Christian

aloys78
06.12.2016, 19:07
Hallo Christian,

mein Vorschlag: siehe Anhang.

Gruß
Aloys

HS(V)
06.12.2016, 23:22
Hallo,

Mein Vorschlag.
Sub hsv()
Dim sn, st, j As Long, c00 As String
sn = Tabelle1.Cells(1).CurrentRegion
For j = 2 To UBound(sn)
c00 = c00 & Replace(String(sn(j, 8), " "), " ", " " & j)
Next
st = Application.Transpose(Split(Trim(c00)))
With Tabelle2
.Cells(1).CurrentRegion.Offset(1).ClearContents
.Cells(2, 1).Resize(UBound(st), 9) = Application.Index(sn, st, Array(1, 2, 3, 4, 5, 6, 7, 8, 9))
End With
End Sub

xyzchristianxyz
03.01.2017, 09:34
Hallo Christian,

mein Vorschlag: siehe Anhang.

Gruß
Aloys

Danke viel mals für deine Lösung, diese Funktioniert wunderbar. :mrcool:
Mit freundlichen Grüssen
Christian