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.

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
Antworten Top
#2
Hallo Matze,

zeig das bitte nochmal anhand einer .xlsx. Eventuell habe ich eine Idee, aber keine Lust, das alles abzutippen.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten 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
Antworten Top
#4
Hola,

zur Info...

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

Gruß,
steve1da
Antworten 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.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten 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
Antworten 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.
Antworten 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)
Antworten Top


Gehe zu:


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