Hallo zusammen, ich habe eine Tabelle mit 3 Spalten. In Spalte A stehen Namen, die öfter kommen. In Spalte B stehen Namen, die öfter vorkommen. Es gibt wiederkehrende Namenskombinationen aus Spalte A und Spalte B. Es kann aber NICHT passieren, dass ein Name, der in Spalte A auftaucht, auch nochmal in Spalte B auftaucht.
In Spalte C steht ein Datum. Ich habe das mit "TTT." benutzerdefiniert, so dass nur der Tag, aber nicht Wochentag/Monat/Jahr abgebildet werden.
Es ist im Grunde so:
Person A (Spalte A) wird Person P (Spalte B) an einem bestimmten Datum (Spalte C) zugeteilt.
Für jeden Tag gibt es eine neue Zeile.
Ich möchte aber für jede identische Spalte A-Spalte B-Kombination am Ende nur eine Zeile haben. Und in Spalte C sollen dann die Tage mit einem Komma getrennt aufgeführt werden.
Ob in Spalte C jetzt die vorgestellt 0 bei Daten vom 01. bis 09. (1. bis 9.) steht, ist nicht so wichtig. Auch nicht, ob dahinter ein Punkt ist.
Siehe angehängtes Bild.
Gerne auch Makro-Lösung, anders wird es vermutlich ja eh nicht gehen. Wenn überhaupt. Danke!
02.09.2025, 11:34 (Dieser Beitrag wurde zuletzt bearbeitet: 02.09.2025, 11:37 von echo.)
Hallo man kann deine Frage nicht eindeutig beantworten, wenn man nicht alle Fakten kennt. Dazu gehört zB. die Frage ob das "Datum" tatsächlich ein formatiertes Datum oder ein Text mit drei Zeichen ist.
Daher die Bitte: Verwende hier keine Bilder als Anhang, sondern stelle eine Beispieldatei (XLSX) mit einigen Daten und dem gewünschten Ergebnis hier rein. Einerseits beantworten sich dann sofort einige Fragen, Andererseits muss man als Helfer das Beispiel zum testen nicht erst nachbauen. Danke
Gruß Holger
Folgende(r) 1 Nutzer sagt Danke an echo für diesen Beitrag:1 Nutzer sagt Danke an echo für diesen Beitrag 28 • murks
danke und sorry. Datei jetzt im Anhang. Statt "Person A" etc. habe ich einfach mal ausgedachte Namen genommen.
Ergebnis sollte dann so aussehen (neue Tabelle mit Spalte A - B - C):
Anna - Fritz - 1, 3, 4 Anna - Nora - 2 Anna - Shawn - 5 Berta - Fritz - 1 Berta - Boris - 3, 8 Berta - Max - 9 Dieter - Max - 2 Dieter - Jimmi - 4, 5 Emil - Fritz - 8, 9, 12 Emil - Nora - 10, 22 Emil - Boris - 11, 13, 14 Emil - Shawn - 15
Wobei es keine Rolle spielt, ob in Spalte C "1, 3, 4" steht oder z.B. "01., 03., 04." oder "01, 03, 04". Wichtig ist, dass es klar zu erkennen ist und die Zeile nicht so super lang wird (z.B. 01.01.25, 03.01.25, 04.01.25).
02.09.2025, 12:29 (Dieser Beitrag wurde zuletzt bearbeitet: 02.09.2025, 12:29 von murks.)
Wow, so einfach. Danke!! Ich stelle leider gerade fest, dass ich auf der Arbeit noch die 2019er Version habe und da gibt es die Funktion noch nicht. Gibt es dafür auch eine Lösung? Danke!
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Sub MakeUniqueList() Dim dicTmp As Object Dim strKey As String Dim strItem As String Dim avntKeys() As Variant Dim astrKey() As String Dim lastRow As Long Dim i As Long
Set dicTmp = CreateObject("Scripting.Dictionary")
lastRow = Range("A2").End(xlDown).row
For i = 2 To lastRow With Cells(i, 1) strKey = .Value & ";" & .Offset(, 1).Value dicTmp(strKey) = dicTmp(strKey) & ";" & .Offset(, 2).Text End With Next
avntKeys = dicTmp.Keys
For i = 0 To UBound(avntKeys) astrKey = Split(avntKeys(i), ";")
With Cells(2 + i, 5) .Value = astrKey(0) .Offset(, 1).Value = astrKey(1) .Offset(, 2).Value = "'" & Mid(dicTmp(avntKeys(i)), 2) End With Next
02.09.2025, 16:11 (Dieser Beitrag wurde zuletzt bearbeitet: 02.09.2025, 16:13 von slowboarder.)
Hi
In älteren Excelversionen ohne VBA und PQ so:
1. Liste nach Spalte A, B, C sortieren, so dass gleiche Namenskombinationen direkt untereinander stehen.
2. In Spalte D diese Formel ab Zeile 2 bis Datenende einfügen: =TEXT(C2;"TT.")&WENN(A2&B2=A3&B3;" "&D3;"")
3. spalte D kopieren und als Wert einfügen
4. Auf die ganze Tabelle die Menüfunktion Daten-Datentools- Duplikate entfernten anwenden, mit Spalte A und B als Kriterium
Ein Makro könnte dann auch genau diese Schritte ausführen
Code:
With range("A1"). CurrentRegion .sort key1:=.cells(1,1), order1:=XL ascending, key2:=.cells(1,2), order2:=xlascending, key3:=.cells(1,3), order3:=xlascending, header:=XL es With .columns(.columns.count + 1) .FormulaLocal = "=TEXT(C2;""TT."")&WENN(A2&B2=A3&B3;"" ""&D3;"""")" .Formula = .value .entirerow.removeduplicates Array(1, 2), xlyes End With .Columns(3).delete. Shift:=xltoleft End with
mit Excel365 würde es noch einfacher gehen: =GRUPPIERENNACH(A2:B23; TAG(C2:C23); MATRIXZUTEXT; 0; 0)
Da du aber Excel365 nicht hast, habe ich dir in der beiliegenden Datei eine PivotTable (PivotTable3) in Tabelle1!E2:G15 eingefügt. Entscheidend ist hier beim Erzeugen der PivotTable, dass das Häkchen "Die Daten dem Datenmodell hinzufügen" gesetzt ist.
Damit die Tagesauflistung für die Namenskombinationen gelingt, habe ich dir in der PivotTable das Measurefeld "Datumliste" hinzugefügt. Die Formel, die die Textauflistung in diesem Feld erzeugt, lautet: =CONCATENATEX(Bereich;DAY([Datum]);"; ")
Man gelangt zu dieser, wenn man einen Rechtsklick auf das zusätzliche Feld "Datumliste" ausführt und den Befehl "Measure bearbeiten" ausführt. Um so ein Measure-Feld neu zu erzeugen, macht man einen Rechtsklick auf den Tabellennamen im PivotTable-Dialog und wählt den Befehl "Measure hinzufügen..."