查找、匹配和连接

jim*_*334 5 lookup concatenation formulas google-sheets google-apps-script

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

Islington | "Bunhill"   | EC2M  
Islington | "Bunhill"   | EC2Y  
Islington | "Bunhill"   | N1  
Barnet    | "Burnt Oak" | HA8  
Barnet    | "Burnt Oak" | NW7  
Barnet    | "Burnt Oak" | NW9  
Run Code Online (Sandbox Code Playgroud)

最终结果需要如下所示:

Islington | "Bunhill"   | EC2M, EC2Y, N1  
Barnet    | "Burnt Oak" | HA8, NW7, NW9 
Run Code Online (Sandbox Code Playgroud)

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

Ala*_*lls 7

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

=UNIQUE(B:B)
Run Code Online (Sandbox Code Playgroud)

获取 B 列中的所有唯一值 。Google 支持 - 唯一函数

UNIQUE 函数的结果将如下所示:

独特的功能

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

=FILTER(D1:D6, B1:B6=A8)
Run Code Online (Sandbox Code Playgroud)

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

FILTER 函数的结果:

过滤功能

连接的结果:

连接函数

您需要调整 FILTER 函数以现在使用 D 列,而不是 C 列。

=CONCATENATE(FILTER(D1:D6, B1:B6=A8))
Run Code Online (Sandbox Code Playgroud)

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

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

添加了带有逗号的列

末尾有一个多余的逗号,您可以使用 LEFT 函数解决这个问题:

左功能

  • 或者,`=JOIN(", ",FILTER(C$1:C$6,B$1:B$6=A8))` (9认同)

pnu*_*uts 1

如果不需要太频繁,那么没有脚本就非常实用。假设EC2M在C2中,D1为空,而你的数据已排序,在D2中:

=if(B1=B2,D1&", "&C2,C2) 
Run Code Online (Sandbox Code Playgroud)

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

=B2=B3 
Run Code Online (Sandbox Code Playgroud)

全选、Ctrl+c、编辑、选择性粘贴、仅将值粘贴到顶部并过滤以选择和删除TRUEColumnE 中的行。