查找,匹配和连接

时间:2015-01-27 18:53:41

标签: google-apps-script google-sheets concatenation lookup formulas

我需要一个公式/函数来连接一列和多行的单元格值。匹配条件应用于不同的列。以下是我必须做的事情的例子:

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 

基本上,我需要删除第二列中的所有重复项,但保存与每个重复项配对的第三列数据,并将其连接到一个单元格中。

3 个答案:

答案 0 :(得分:1)

如果不经常需要,没有脚本就很实用。假设EC2M在C2中,D1为空,您的数据在D2中进行排序:

=if(B1=B2,D1&", "&C2,C2) 

并且在E2中,两个公式都被复制以适应:

=B2=B3 

选择全部,Ctrl + c,编辑,粘贴特殊,仅粘贴顶部的值并过滤以在ColumnE中选择和删除TRUE的行。

答案 1 :(得分:1)

您可以使用功能完成一系列步骤。从UNIQUE功能开始。将它放在一个单元格中,方便列出B列的所有唯一值:

=UNIQUE(B:B)

获取B列中的所有唯一值。 Google Support - Unique Function

UNIQUE函数的结果如下所示:

unique function

现在您已拥有B列中的所有唯一值,您可以使用FILTER函数检索与该唯一值匹配的所有行。

=FILTER(D1:D6, B1:B6=A8)

FILTER函数列出了列中的所有结果,但您可以使用CONCATENATE函数来避免这种情况。

FILTER功能的结果:

FILTER function

CONCATENATE的结果:

Concatenate function

您需要调整FILTER功能,现在使用D列,而不是C列。

=CONCATENATE(FILTER(D1:D6, B1:B6=A8))

这解决了在多行中获取数据的问题,但现在这些值之间没有分隔符。

要解决该问题,您可以创建第四列,其中包含一个向末尾添加逗号的函数:

Added a column with a coma

最后有一个额外的逗号有问题,你可以用LEFT功能摆脱它:

Left Function

答案 2 :(得分:0)

TEXTJOIN与CONCATENATE相比有2个优点:(1)可自定义的分隔符,(2)可以跳过空格。

示例:

AA | BB | CC | __ | EE

= TEXTJOIN(“,”,TRUE,A1:E1)

会产生:AA,BB,CC,EE

(跳过空白的DD,并在除上一个词之外的每个词之间插入一个逗号)