Aktuell kann es Probleme bei der Anmeldung geben. Meldet Euch in dem Fall bei uns (webmaster at clever-excel-forum.de) und wir unterstützen Euch. x

Daten unterschiedlicher Länge von Spalte in Zeilen
#1
Hallo zusammen,

Ich stehe vor folgendem Problem: Eine Programm gibt mir in Excel das MSD für verschiedene Tracks in einer für mich unbrauchbaren Darstellung aus:
   
In Spalte A steht der Name des jeweiligen Tracks mit anschliessender indizierung in unbestimmter Länge. In Spalte B stehen die entsprechenden Werte für jeden Index des entsprechenden Tracks.

Um mit den Daten etwas anfangen zu können muss ich sie transformiert haben, so dass in Spalte A die "Tracknummern" stehen und dann in der entsprechenden Zeile die Werte die vorhin in Spalte B waren. Also so:
   

Gibt es dafür irgendeine Lösung? Bis jetzt fällt mir nur per Hand transponieren ein, aber das macht bei mehreren Tausend Tracks keinen Spaß...

Vielen Dank
Matze
Top
#2
Hallo Matze,

zeig das bitte nochmal anhand einer .xlsx. Eventuell habe ich eine Idee, aber keine Lust, das alles abzutippen.
Top
#3
Hallo Günter,

hier ist das ganze nochmal als Beispieldatei:

.xlsx   TEst.xlsx (Größe: 9,55 KB / Downloads: 8)

Schöne Grüße
Matze
Top
#4
Hola,

zur Info...

http://www.office-loesung.de/p/viewtopic.php?f=166&t=771391

Gruß,
steve1da
Top
#5
Hi Matze,

hab' mal hin und her probiert - komme leider auf keine Lösung. Ich fürchte fast, dass mit Bordmitteln das Problem nicht zu lösen ist, sondern VBA weiterhelfen muss. Da kann ich allerdings nichts tun.
Top
#6
Hallo Matze,

eine mögliche Lösung hier:
http://www.office-loesung.de/p/viewtopic.php?f=166&t=771391#p3152384

Gruß Karl
Top
#7
Hi,

mit Formeln:

Arbeitsblatt mit dem Namen 'Ausgangsformatierung'
DEFGHIJKLMN
1track 001,0106621,3867793,1632952,2107031,8318892,9046472,37123
2track 101,6781512,7362024,9836526,095118
3track 202,9003624,5227746,945748,95785211,3885914,477717,8784521,3611125,24612

ZelleFormel
D1=WENNFEHLER(INDEX($A:$A;AGGREGAT(15;6;ZEILE(A:A)/(A:A<>"")/ISTTEXT(A:A);ZEILE(A1)));"")
E1=WENN(SPALTE(A1)+VERGLEICH($D1;$A:$A;0)<WENNFEHLER(VERGLEICH($D2;$A:$A;0);VERWEIS(9;1/($A:$A<>"");ZEILE($A:$A)));INDEX($B:$B;MIN(VERGLEICH($D1;$A:$A;0)+SPALTE(A1)));"")
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.01] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Wird mit größeren Datenmengen wohl etwas langsam, dann müssten die Bereiche angepasst werden:




Code:
=WENNFEHLER(INDEX($A:$A;AGGREGAT(15;6;ZEILE($A$1:$A$1000)/($A$1:$A$1000<>"")/ISTTEXT($A$1:$A$1000);ZEILE(A1)));"")
=WENN(SPALTE(A1)+VERGLEICH($D1;$A:$A;0)<WENNFEHLER(VERGLEICH($D2;$A:$A;0);VERWEIS(9;1/($A$1:$A$1000<>"");ZEILE($A$1:$A$1000)));INDEX($B:$B;MIN(VERGLEICH($D1;$A:$A;0)+SPALTE(A1)));"")
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#8
Hallöchen,

das wäre mal mein Ansatz - etwas abweichend von der VBA-Lösung im anderen Forum.

Code:
Sub TracksTransponieren()
'Variablendeklarationen
'Variant/Array, Long
Dim gefunden, arrTrack, iCnt&
'Startzeile setzen
arrTrack = "1"
'Zelle A1 als Startzelle setzen
Set gefunden = Cells(1, 1)
'Naechste Trefferzelle setzen
'Ich gehe davon aus, dass min, 2 Tracks enthalten sind
Set gefunden = Cells.Find(What:="track", After:=gefunden, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
'Schleife ueber alle weiteren Tracks
Do While Not gefunden Is Nothing
    'Trefferzeile uebernehmen
    arrTrack = arrTrack & ";" & gefunden.Row
    'naechsten Track suchen
    Set gefunden = Cells.FindNext(After:=gefunden)
    'Falls wieder am Anfang angekommen, Schleife verlassen
    If gefunden.Row = 1 Then Exit Do
'Ende Schleife ueber alle weiteren Tracks
Loop
'Abschlusszeile ermitteln und uebernehmen
arrTrack = arrTrack & ";" & Cells(Rows.Count, 2).End(xlUp).Row + 1
'Array fuer Schleife bilden
arrTrack = Split(arrTrack, ";")
'Schleife uber die Arrayelemente
For iCnt = 0 To UBound(arrTrack) - 1
  'einen Track-Bereich kopieren
  Range(Cells(arrTrack(iCnt), 2), Cells(arrTrack(iCnt + 1) - 1, 2)).Copy
  'Track-Beriech auf Tabelle1 einfuegen / transponieren, beginnend mit A1
  Sheets("tabelle1").Cells(iCnt + 1, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
  'Trackbezeichnung uebernehmen
  Sheets("tabelle1").Cells(iCnt + 1, 1).Value = Cells(arrTrack(iCnt), 1).Value
'Ende Schleife uber die Arrayelemente
Next
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


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