Excel: Spalteninhalte zu Zeilen verschieben

kekskruemel

Angesehenes Mitglied
Ich formatiere gerade den Inhalt einer Datenbank um und diese ist an sich so aufgebaut:

id - zahl
1 - 2,3,5
2 - 4,56,2

Nun möchte ich gerne diese Tabelle in Excel so haben, dass die Inhalte der Spalte zahl in jeweils einer eigenen Zeile sind, aber passend zu der id.
Dafür habe ich bereits die Inhalte der Spalte "zahl" aufgetrennt in eigene Spalten anhand des Kommas.

Wie bekomme ich die nun in eigene Zeilen? Hat da jemand eine Idee?
Es handelt sich um einige hundert Ursprungszeilen.

Ziel ist:

id - zahl
1 - 2
1 - 3
1 - 5
2 - 4
2 - 56
2 - 2


Grüße
Rainer
 
CODE Sub Makro1()

start_zeile = 2
start_spalte = 2
letzte_zeile = 3
ausgabe_zeile = 10

For aktuelle_zeile = start_zeile To letzte_zeile
letzte_spalte_mit_inhalt = Cells(aktuelle_zeile, 100).End(xlToLeft).Column
' erster wert in zeile ist die aktuelle ID
aktuelle_ID = Cells(aktuelle_zeile, 1).Value
For aktuelle_spalte = start_spalte To letzte_spalte_mit_inhalt
' schreibe die aktuelle ID in erste spalte
Cells(ausgabe_zeile, 1) = aktuelle_ID
' schreibe die vorhandenen ZAHLEN in zweite spalte
Cells(ausgabe_zeile, 2) = Cells(aktuelle_zeile, aktuelle_spalte).Value
ausgabe_zeile = ausgabe_zeile + 1
Next aktuelle_spalte
Next aktuelle_zeile

End Sub


Im Bild erkennst du mein Beispiel. Du musst nur die ersten 4 Variablen anpassen und dann das Marko laufen lassen.

Freue mich über eine Erfolgsmeldung!
wink.gif


Grüße
Steve Anhang anzeigen 2

 
wow, danke. Werde ich gleich testen. Da es sich bei mir um eigentlich mehrere hundert Zeilen handelt: Wie kann ich in der Makro festhalten, dass er die neue Tabelle in einem neuen Tabellenblatt erstellt?
Danke
 
CODE Sub Makro1()

start_zeile = 2
start_spalte = 2
letzte_zeile = 3
ausgabe_zeile = 1
ausgabe_tabellenblatt = 2

For aktuelle_zeile = start_zeile To letzte_zeile
letzte_spalte_mit_inhalt = Cells(aktuelle_zeile, 100).End(xlToLeft).Column
' erster wert in zeile ist die aktuelle ID
aktuelle_ID = Cells(aktuelle_zeile, 1).Value
For aktuelle_spalte = start_spalte To letzte_spalte_mit_inhalt
' schreibe die aktuelle ID in erste spalte
Sheets(ausgabe_tabellenblatt).Cells(ausgabe_zeile, 1) = aktuelle_ID
' schreibe die vorhandenen ZAHLEN in zweite spalte
Sheets(ausgabe_tabellenblatt).Cells(ausgabe_zeile, 2) = Cells(aktuelle_zeile, aktuelle_spalte).Value
ausgabe_zeile = ausgabe_zeile + 1
Next aktuelle_spalte
Next aktuelle_zeile

End Sub


Wichtig hierbei ist, dass du das Makro im Tabellenblatt mit den Daten startest!

Viel Erfolg!
 
Zurück
Oben