Clever-Excel-Forum

Normale Version: Spalten Kopf automatisch vor jede Zeile schreiben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Leute,
ich habe folgendes Problem und konnte dieses auch nicht mit diversen mtrans Funktionen lösen.
  • In Zeile 1 stehen diverse ID's die nach rechts fortlaufend sind (pro Spalte genau eine ID)
  • unter der jeweiligen Spalte stehen Produktnamen, die der im Spaltenkopf stehenden ID zugehörig sind
Nun soll die ID aus dem Spaltenkopf vor jedes, der unterliegenden Produkte, in die vorhergehende Spalte geschrieben werden.

Ausgangslage:
A1 = ID1
A2 = Produkt1 zu ID1
A3 = Produkt2 zu ID1

B1 = ID2
B2 = Produkt1 zu ID2
B3 = Produkt2 zu ID2

Ziel:

A1 = ID1
A2 = ID1
A3 = ID2
A4 = ID2

B1 = Produkt1 zu ID1
B2 = Produkt2 zu ID1
B3 = Produkt1 zu ID2
B4 = Produkt2 zu ID2

Ich denke es wird deutlich wenn man das Excel Sheet vor sich hat. Ein weiteres Problem das es zu lösen gilt, ist das die Spalten nahtlos aneinander angrenzen, weswegen man die ID nicht einfach vor die Spalte schreiben kann. Im folgenden werde ich das Excel Sheet hochladen, eventuell hat jemand ja eine Formel parat die ich nicht auf dem Schirm habe. Vielen Dank für eure Mithilfe. LG
Hallo,

Zitat:Ich denke es wird deutlich wenn man das Excel Sheet vor sich hat.

... und wo ist sie dann?
zwei mal das Hochladen angedroht und nicht einmal zu finden  :05:


Ob ich das nun richtig verstanden habe, weiß ich nicht, aber wenn ich mehrere  Einträge zu einem machen will,
dann fällt mir adhoc das Verketten ein. Aber wie gesagt, daß ist nur das, was ich aus Deinem Beitrag "erlesen" habe.

SPÄTER:
Na gut, während Du Deinen Beitrag komplettiert hast, habe ich meinen geschrieben.
Hallo Käpt'n Blaubär,
entschuldige bitte den Upload Fehler - jetzt sollte das Sheet unter dem Post abrufbar sein.
Beste Grüße
Hallo,

mit folgendem Makro werden die Daten in ein neues Arbeitsblatt geschrieben:

Sub DatenUmschaufeln()
 Dim vQuelle As Variant, vZiel As Variant
 Dim lngSpalte As Long, lngZeile As Long, lngZiel As Long
 
 vQuelle = Tabelle1.Cells(1).CurrentRegion.Value
 Redim vZiel(1 To Ubound(vQuelle, 1) * Ubound(vQuelle, 2), 1 To 2)
 
 For lngSpalte = 1 To Ubound(vQuelle, 2)
   For lngZeile = 2 To Ubound(vQuelle, 1)
     If vQuelle(lngZeile, lngSpalte) <> 0 Then
       lngZiel = lngZiel + 1
       vZiel(lngZiel, 1) = vQuelle(1, lngSpalte)
       vZiel(lngZiel, 2) = vQuelle(lngZeile, lngSpalte)
     Else
       Exit For
     End If
   Next lngZeile
 Next lngSpalte
 
 Worksheets.Add.Cells(1, 1).Resize(Ubound(vZiel, 1), Ubound(vZiel, 2)).Value = vZiel
End Sub

Gruß Uwe
Ein kleiner Ausschnitt deiner Daten, ist das so gemeint? (-> Mit Power Query)
Irgendwie widerspricht sich deine Textbeschreibung dem Muster darunter ...
(05.04.2016, 14:23)Kuwer schrieb: [ -> ]mit folgendem Makro werden die Daten in ein neues Arbeitsblatt geschrieben

Hey Uwe,
es hat geklappt! Vielen vielen Dank für die schnelle Hilfe. Jetzt kann ich wieder weiter in den Daten wühlen :P
LG

PS: Auch an alle anderen ein großes Dankeschön für ihre Mithilfe - von meiner Seite aus wäre dieser Thread abgeschlossen (erfolgreich)