Registriert seit: 09.07.2018
Version(en): Office Professional Plus 2016
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
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hallo Matze,
zeig das bitte nochmal anhand einer .xlsx. Eventuell habe ich eine Idee, aber keine Lust, das alles abzutippen.
Registriert seit: 09.07.2018
Version(en): Office Professional Plus 2016
Hallo Günter, hier ist das ganze nochmal als Beispieldatei:
TEst.xlsx (Größe: 9,55 KB / Downloads: 8)
Schöne Grüße Matze
Registriert seit: 16.04.2014
Version(en): xl2016/365
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
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.
Registriert seit: 14.05.2017
Version(en): MS Office Prof. Plus 2016_32-Bit
Registriert seit: 13.04.2014
Version(en): 365
10.07.2018, 08:08
(Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2018, 08:08 von BoskoBiati.)
Hi, mit Formeln: Arbeitsblatt mit dem Namen 'Ausgangsformatierung' | | D | E | F | G | H | I | J | K | L | M | N | 1 | track 0 | 0 | 1,010662 | 1,386779 | 3,163295 | 2,210703 | 1,831889 | 2,904647 | 2,37123 | | | 2 | track 1 | 0 | 1,678151 | 2,736202 | 4,983652 | 6,095118 | | | | | | 3 | track 2 | 0 | 2,900362 | 4,522774 | 6,94574 | 8,957852 | 11,38859 | 14,4777 | 17,87845 | 21,36111 | 25,24612 |
Zelle | Formel | 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.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
|