Ich habe eine Tabelle mit großen Datenmengen, die Familiennamen und Familienhaushalte enthält. Und ich versuche, sie in einer eindeutigen Liste zusammenzufassen, gefolgt von den Haushaltsnamen als durch Kommas getrennte Werte.
In der folgenden Tabelle werden die Eingaben und die gewünschte Ausgabe erläutert.
Hier sind die Rohdaten.
Haushalt | Namen |
---|---|
Schmied | Julia |
Boyer | Anja |
Müller | Katharina |
Schmied | John |
Boyer | Doug |
Boyer | Sam |
Müller | Joe |
Schmied | Jim |
Boyer | Jeff |
Ich fand eineähnliche Anfrage, aber für Python. Ich suche nach etwas in Excel, das dies kann. Ich habe es mit einer Pivot-Tabelle versucht, aber das funktioniert nicht, da versucht wird, die Daten zu aggregieren.
Antwort1
Es gibt viele Möglichkeiten, das gewünschte Ergebnis zu erzielen. Hier sind einige Möglichkeiten, die mir bisher bekannt sind:
▶️ Mit Power Query
, verfügbar in Windows Excel 2010+
undExcel 365 (Windows or Mac)
Um Power Query zu verwenden, befolgen Sie die Schritte:
- Konvertieren Sie zunächst die Quellbereiche in eine Tabelle und benennen Sie diese entsprechend. Für dieses Beispiel habe ich sie wie folgt benannt:
Table1
- Öffnen Sie als Nächstes eine leere Abfrage über Datadie Tabulatortaste --> Get & Transform Data--> Get Data--> From Other Sources-->Blank Query
- Das obige lässt das Power QueryFenster öffnet sich, jetzt von HomeTab --> Advanced Editor--> Und fügen Sie das Folgende ein, M-Codeindem Sie alles entfernen, was Sie sehen, und drücken SieDone
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Household", type text}, {"Names", type text}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Household"}, {{"Names", each Text.Combine([Names],", "), type text}})
in
#"Grouped Rows"
- Zum Schluss importieren Sie es wieder nach Excel--> Klicken Sie auf Close & Loadoder Close & Load To-->. Der erste Klick erstellt ein New Sheetmit der erforderlichen Ausgabe, während der letzte Klick ein Fenster öffnet, in dem Sie gefragt werden, wo das Ergebnis abgelegt werden soll.
▶️ Verwenden GROUPBY()
der Funktion verfügbar inMS365
Office Insider-Version:
=GROUPBY(A2:A10,B2:B10,ARRAYTOTEXT,,0)
▶️ Oder mithilfe LAMBDA()
der Hilfsfunktion BYROW()
--> Gilt für den aktuellen KanalMS365
=LET(
_data, A2:B10,
_household, TAKE(_data,,1),
_names, UNIQUE(_household),
HSTACK(_names, BYROW(_names, LAMBDA(x, TEXTJOIN(", ",1,IF(x=_household,TAKE(_data,,-1),""))))))
▶️ Oder mit POWER PIVOT
, verfügbar in Windows Excel 2013+
undExcel 365 (Windows)
Um Power Pivot zu verwenden, befolgen Sie die Schritte:
- Konvertieren Sie zunächst die Quellbereiche in eine Tabelle und benennen Sie diese entsprechend. Für dieses Beispiel habe ich sie wie folgt benannt:
Table_1
- Wählen Sie eine Zelle in Ihren Daten aus und klicken Sie auf
Insert
die Tabulatortaste -> Klicken Sie aufPivot Table
--> EsTable/Range
wird angezeigt alsTable_1
, Klicken Sie aufNew Worksheet
oderExisting Worksheet
entsprechend Ihrer Wahl, --> Wählen Sie im letzteren Fall den Zellenstandort aus und klicken Sie aufAdd this data the Data Model
.
- Klicken Sie im rechten Bereich auf
Pivot Table
Felder. Klicken Sie mit der rechten Maustaste aufTable_1
und wählen SieAdd Measure
- Geben Sie den Maßnamen nach Ihrer Wahl ein und geben Sie die folgende Formel in den Formelbereich ein:
=CONCATENATEX(Table_1,[Names],", ")
- Drücken Sie „OK“, „Auswählen“
Household
und platzieren Sie es imROWS
Bereich, während die Maßnahme mit dem NamenName-CommaSeparated
(in diesem Beispiel verwendet, Sie können sie ändern) imVALUES
Bereich ist.
- Ändern Sie auf
Design
der RegisterkarteReport Layout
inShow in Tabular Form
, klicken Sie auf „Weiter“Grand Totals
und wählen Sie ausOff for Rows and Columns
, und Sie erhalten die gewünschte Ausgabe.
⏩ Eine weitere alternative Version für Excel 2016+
weiter:
=SUBSTITUTE(CONCAT(IF(D2=A$2:A$10,","&B$2:B$10,"")),",",,1)
Bei der obigen Formel muss beim Verlassen des Bearbeitungsmodus nur bei älteren Versionen CTRL+ SHIFT+ gedrückt werden .ENTER