Mehrere Zeilen zusammenfassen, wenn...
#1
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!

   
Antworten Top
#2
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:
  • murks
Antworten Top
#3

.xlsx   excel1.xlsx (Größe: 11,48 KB / Downloads: 4)
Hallo Holger (und alle anderen),

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).

Vielen Dank!
Antworten Top
#4
Moin

E2
Code:
=EINDEUTIG($A$2:$B$23)


G2
Code:
=TEXTVERKETTEN(", ";WAHR;WENN(($A$2:$A$23=E2)*($B$2:$B$23=F2);TEXT($C$2:$C$23;"TT.");""))
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

[-] Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:
  • murks
Antworten Top
#5
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!
Antworten Top
#6
...mit PQ sollte es funktionieren...


.xlsx   Text aus Liste kombinieren.xlsx (Größe: 20,76 KB / Downloads: 3)
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.

Ciao, Ralf

Antworten Top
#7
... mit VBA dann so:
Code:
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
 
  Set dicTmp = Nothing
End Sub

Knobbi38
Antworten Top
#8
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

Gruß Daniel
Antworten Top
#9
Hallo,

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..."


Angehängte Dateien
.xlsx   murks_excel1.xlsx (Größe: 89,4 KB / Downloads: 3)
Gruß Anton.

Windows 10 64bit
Office365 32bit
Antworten Top


Gehe zu:


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