我需要一个公式/函数来连接一列和多行中的单元格值。匹配条件将应用于其他列。这是我要做的事情的示例:
Islington | "Bunhill" | EC2M
Islington | "Bunhill" | EC2Y
Islington | "Bunhill" | N1
Barnet | "Burnt Oak" | HA8
Barnet | "Burnt Oak" | NW7
Barnet | "Burnt Oak" | NW9
最终结果需要看起来像这样:
Islington | "Bunhill" | EC2M, EC2Y, N1
Barnet | "Burnt Oak" | HA8, NW7, NW9
[基本上,我需要从第二列中删除所有重复项,但是要保存与每个重复项配对的第三列中的数据,并将其连接在一个单元格中。
您可以使用功能来逐步进行操作。从UNIQUE
功能开始。将其放在方便列出B列的所有唯一值的单元格中:
=UNIQUE(B:B)
获取B列中的所有唯一值。Google Support - Unique Function
UNIQUE函数的结果将如下所示:
现在您已拥有B列中的所有唯一值,您可以使用FILTER函数检索与该唯一值匹配的所有行。
=FILTER(D1:D6, B1:B6=A8)
FILTER函数将所有结果列在该列下方,但是您可以使用CONCATENATE函数来避免这种情况。
FILTER函数的结果:
CONCATENATE的结果:
您需要调整FILTER函数以现在使用D列而不是C列。
=CONCATENATE(FILTER(D1:D6, B1:B6=A8))
这解决了获取多行数据的问题,但是现在值之间没有分隔符。
要解决该问题,您可以创建第四列,并在其末尾添加一个逗号的函数:
最后有一个多余的逗号问题,您可以使用LEFT函数将其消除:
如果不需要太多的话,没有脚本就很实用。假设EC2M
在C2中,D1为空白,并且您的数据在D2中进行了排序:
=if(B1=B2,D1&", "&C2,C2)
以及在E2中,两个公式都被复制为适合:
=B2=B3
全选,Ctrl + c,编辑,特殊粘贴,仅在顶部粘贴值并过滤以选择和删除列E中带有TRUE
的行。
TEXTJOIN与CONCATENATE相比有2个优点:(1)可自定义的分隔符,(2)可以跳过空格。
示例:
AA | BB | CC | __ | EE
= TEXTJOIN(“,”,TRUE,A1:E1)
将产生:AA,BB,CC,EE
(跳过空白的DD并在除最后一个词之外的每个词之间加一个逗号)