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