[Excel] Namensliste in Adressliste zusammenführen

flukas

Mitglied
Hallo,
ich habe eine Excel Tabelle in der Vornamen, Nachnamen, Straße, Hausnummer usw. vorhanden sind. Manchmal sind pro Adresse mehrere Personen wohnhaft. Ich möchte eine Adressliste bekommen, in der mehrere Namen pro Adresse in eine Zelle zusammengefasst werden, damit mit dieser Liste Einladungen verschickt werden können. Pro Adresse soll nur eine Einladung verschickt werden. Ich habe nun mal Adresse und Hausnummer, sowie Vorname und Nachname in jeweils eine andere Spalte zusammengefasst.

Nun hätte ich gerne folgendes Szenario: Bspw. pro Adresse sind drei Personen vorhanden. Ich hätte am Ende gerne eine Liste in der in Spalte1 alle drei Namen mit Beistrich getrennent vorhanden sind und in Spalte2 die Adresse inkl. Hausnummer. Die Werte aus Spalte 2 müssen somit unique sein (mir fällt der deutsche Begriff dazu momentan nicht ein). Ich war in der Lage mithilfe einer Pivottabelle die Daten pro Adresse zu gruppieren, nur bin ich nicht in der Lage diese Daten weiter zu verwenden.

Ich hoffe die Problemstellung ist einigermaßen klar. Bin für jegliche Hilfe dankbar.

Grüße
 
Zuletzt bearbeitet:
Ich fürchte, dass es ohne Makro-Aufwände nicht möglich ist (zumindest ist mir kein Weg bekannt). Wäre eine Makro-Lösung für dich ok?
 
Hallo,
am Anfang war ich noch der Meinung, dass es mit einer vielleicht auch "Gewalts-Formel" funktionieren muss. Aber mitterweile bin ich auf dem Punkt, dass ich mich auch mit einem Makro gerne abfinde. Hättest Du hier einen Lösungsansatz?
Grüße
 
Hallo,

was verstehst du unter Gewaltsformel?

Ein einzelner Eintrag wär bestimmt ohne größeren Aufwand mit einer Formel möglich. Das Problem ist hier aber, dass du die Straße kennen musst je Formel, d.h. du musst alle Straßen genau kennen. Ich gehe jedoch davon aus, dass die Anzahl der Straßen variieren kann, deswegen hattest du auch versucht mit einer Pivot-Tabelle ans Ziel zu kommen. Von der Grundüberlegung wäre dies sicher richtig, aber eine Pivot-Tabelle kann solche Text-Umformungen meines Wissens nicht.

Ich habe ansonsten mal Quick&Dirty fix etwas zusammengeschrieben:
Visual Basic:
' Dieser Code geht von einer nach der Adresse sortierten Liste aus
' In dem Beispiel ist A der vollständige Name, B die Adresse
' Tabelle enthält Überschriften in Zeile 1
Sub GeneriereHaushalte()
    Dim rngAdresse As Range
    Dim rngLetzteAdresse As Range
    Dim iLetzteZeile As Integer
    Dim iLetzteZeile2 As Integer
    
    iLetzteZeile = Worksheets("Personen").UsedRange.Rows.Count
    
    For Each rngAdresse In Worksheets("Personen").Range("B2:B" & iLetzteZeile)
        iLetzteZeile2 = Worksheets("Haushalte").UsedRange.Rows.Count

        Set rngLetzteAdresse = Worksheets("Haushalte").Range("B" & iLetzteZeile2)

        If rngLetzteAdresse.Value = rngAdresse.Value Then
            rngLetzteAdresse.Offset(0, -1).Value = rngLetzteAdresse.Offset(0, -1).Value & ", " & rngAdresse.Offset(0, -1).Value
        Else
            rngLetzteAdresse.Offset(1, 0).Value = rngAdresse.Value
            rngLetzteAdresse.Offset(1, -1).Value = rngAdresse.Offset(0, -1).Value
        End If
    Next rngAdresse
End Sub
 
Du kannst es über 2 zusatzspalten lösen.

Hier mal mein Beispiel.

Soritere nach der Gruppierungsspalte
A: Gruppierungswert
B: Datenwert
C: Flag ob es der letzte Eintrag der Gruppe ist
D: Werte von B zusammengführt

x1.PNG

Formel C2: =NOT(A2=A3)
überprüfe ob der Wert in A auf der nächsten Zeile ungleich der aktuellen ist.

Formal D2: =IF(A2=A1;C1 & ",";"") & B2
Wenn der Wert von A eine Zeile höher derselbe ist, dann nimm den Wert von D der oberen Zeile und hänge ein Komma an. So oder so dann den eigenen Wert von B anhängen

Dann noch nach C = true filtern, fertig.
In A hast du den Gruppenwert, in D den Concat über alle B de Gruppe

x2.PNG
 
Vielen Dank für eure beiden Antworten und Vorschläge.

Ich muss sagen, von der Formel von Yaslaw bin ich begeistert, da es diese Formel doch etwas flexibler als ein Makro ist.

Jedoch habe ich das nun versucht auf meine Tabelle zu adaptieren und bekomme als Egebnis nicht das Richtige. Ist die Transkription der Formel

Formal D2: =IF(A2=A1;C1 & ",";"") & B2
Wenn der Wert von A eine Zeile höher derselbe ist, dann nimm den Wert von D der oberen Zeile und hänge ein Komma an. So oder so dann den eigenen Wert von B anhängen

so vollständig richtig? Denn das Ergebnis ist bei mir ein Mix aus Adressen und Namen :)

Vielen Dank nochmal für eure Bemühungen!
 
Ah sorry. Natürlich ist sie korrekt. Ich habe mich nur in Zeile 1 angefangen die Formel einzugeben und die nächste Zeile verwendet. Das funktioniert natürlich nicht. Wer lesen kann, ist klar im Vorteil. Vielen Dank nochmal!
 

Neue Beiträge

Zurück