我正在处理一个包含两列的数据集。A 列是一组 ID,B 列是电子邮件地址。
A 列全部唯一,但 B 列中会有重复项。
我需要在 B 列中找到重复的实例,并将 A 列中的唯一数据合并到 B 列中第一个数据实例旁边的行中。
例如:
1234. [email protected]
1256. [email protected]
1357. [email protected]
我需要将其变成:
[email protected]. 1234. 1256. 1357.
合理?
答案1
数组(CSE)公式解决了该问题:
怎么运行的:
为了在单元格中获取唯一的邮件 ID 公式
D71
,请使用以下公式完成公式Ctrl+Shift+Enter并填写。{=IFERROR(INDEX($B$71:$B$73, MATCH(0,COUNTIF($D$70:D70, $B$71:$B$73), 0)),"")}
在单元格中输入此公式
E71
,最后Ctrl+Shift+Enter并正确填写。{=IFERROR(INDEX($A$71:$A$73,SMALL(IF($B$71:$B$73=$D71,ROW($A$71:$A$73)-MIN(ROW($A$71:$A$73))+1),COLUMNS($E$71:E71))),"")}
:警告: 添加这部分的目的是为了处理另一种可能性,这种可能性总是有可能的。
假设您有更多如下所示的邮件 ID,按随机顺序排列。
注意:
- 在这种情况下,可以使用我上面使用的公式,但您需要扩展单元格引用。
- 对于单元格中的公式,
D71
单元格引用应该是($B$71:$B$76)
。 - 对于单元格中的公式也
E71
应该是$A$71:$A$76
&$B$71:$B$76
。
如果位置(单元格范围)发生变化,则需要调整公式中的单元格引用。
答案2
如果您拥有带有 Office 365 的 Excel,并且具有新的FILTER
和UNIQUE
函数以及动态数组,则可以使用以下命令:
将您的数据变成桌子 我使用了@RajeshS 的例子
要创建唯一的电子邮件列表:
D3: =UNIQUE(Table1[Email])
- 这将自动填充必要的结果
`E3: =TRANSPOSE(INDEX(FILTER(Table1,Table1[Email]=D3),0,1))`
- 这将自动向右填充结果
- 选择 E3 并根据需要向下填充
如果你想知道结果在 B 列中第一个数据实例旁边的行中,然后使用以下公式:
C2: =IF(COUNTIF($B$2:B2,B2)=1,TRANSPOSE(FILTER(ID,B2=Email)),"")
如果您没有 O365,则可以使用以下方法轻松将结果创建为单独的表格Power Query (适用于 Excel 2010 及以上版本)
M 代码
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"Email", type text}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Email"}, {{"Grouped", each _, type table [ID=number, Email=text]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "ID", each Table.Column([Grouped],"ID")),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Grouped"}),
#"Extracted Values" = Table.TransformColumns(#"Removed Columns", {"ID", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "ID", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"ID.1", "ID.2", "ID.3"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"ID.1", Int64.Type}, {"ID.2", Int64.Type}, {"ID.3", Int64.Type}})
in
#"Changed Type1"