我有一张包含大量数据的表格,其中包含姓氏和家庭户数。我试图将它们放在一个唯一列表中,后面是家庭名称,以逗号分隔的值。
下表解释了输入和期望输出。
这是原始数据。
家庭 | 名字 |
---|---|
史密斯 | 简 |
博耶 | 安雅 |
磨坊主 | 凯特 |
史密斯 | 约翰 |
博耶 | 道格 |
博耶 | 山姆 |
磨坊主 | 乔 |
史密斯 | 吉姆 |
博耶 | 杰夫 |
我确实找到了类似的请求,但是针对的是 Python。我在 Excel 中寻找可以执行此操作的程序。我尝试了数据透视表,但它不起作用,因为它试图聚合它。
答案1
有很多方法可以实现所需的输出,以下是我迄今为止所知道的几种方法:
▶️ 使用Power Query
,可在Windows Excel 2010+
和Excel 365 (Windows or Mac)
要使用 Power Query,请按照以下步骤操作:
- 首先将源范围转换为表格并进行相应命名,在此示例中,我将其命名为
Table1
- Data接下来,从Tab --> Get & Transform Data--> Get Data--> From Other Sources-->打开一个空白查询Blank Query
- 上面的命令可以Power Query打开窗口,现在从HomeTab --> Advanced Editor--> 删除您看到的任何内容并粘贴以下内容M-Code,然后按Done
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"
- 最后,将其导回Excel--> 单击Close & Load或Close & Load To--> 第一个单击的将创建一个New Sheet具有所需输出的,而后者将提示一个窗口询问您将结果放在何处。
▶️GROUPBY()
使用MS365
Office 预览体验版本:
=GROUPBY(A2:A10,B2:B10,ARRAYTOTEXT,,0)
▶️ 或者,使用LAMBDA()
辅助函数BYROW()
--> 适用于当前频道MS365
=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),""))))))
▶️ 或者,使用POWER PIVOT
,可在Windows Excel 2013+
和Excel 365 (Windows)
要使用 Power Pivot,请按照以下步骤操作:
- 首先将源范围转换为表格并进行相应命名,在此示例中,我将其命名为
Table_1
- 选择数据中的某个单元格并单击
Insert
Tab -> 单击Pivot Table
-->Table/Range
将显示为Table_1
,根据您的选择单击New Worksheet
或Existing Worksheet
,--> 如果后者选择单元格位置并单击Add this data the Data Model
。
- 在右侧
Pivot Table
字段窗格出现时,右键单击Table_1
窗格并选择Add Measure
- 根据您的选择输入度量名称,然后在公式部分输入以下公式:
=CONCATENATEX(Table_1,[Names],", ")
- 按“确定”,选择
Household
并放置在“ROWS
区域”中,同时将“测量”命名为Name-CommaSeparated
(在此示例中使用,您可以更改它)在VALUES
“区域中”。
- 从
Design
Tab 中将 更改为Report Layout
,Show in Tabular Form
然后单击Grand Totals
并选择Off for Rows and Columns
,您将获得所需的输出。
⏩ 另一个替代版本Excel 2016+
:
=SUBSTITUTE(CONCAT(IF(D2=A$2:A$10,","&B$2:B$10,"")),",",,1)
上述公式仅在旧版本中需要在退出编辑模式时按CTRL++ 。SHIFTENTER