在Excel中连接多个匹配

请看下面

图片

我想将表2中的“注释”连接到表1中,如图像序列所示,而不使用TEXTJOIN()或macros。 只使用常规的Excel函数

没有使用UDF或帮助列没有简单的解决scheme。 我会build议使用UDF公式,这是很容易实现和在工作表中使用。 要使用这种方法,请在regular module (模块1)中input此代码。

 Function Lookup_concat(Search_string As String, _ Search_in_col As Range, Return_val_col As Range) Dim i As Long Dim result As String For i = 1 To Search_in_col.Count If Search_in_col.Cells(i, 1) = Search_string Then result = result & " " & Return_val_col.Cells(i, 1).Value End If Next Lookup_concat = Trim(result) End Function 

现在,您可以像使用常规工作表公式一样使用此UDF。 在单元格I3input这个公式=Lookup_concat(G3,$D$3:$D$12,$E$3:$E$12)并将其拖动到底部。

在这里输入图像说明

如果您只想使用常规公式,则需要input以下公式=IFERROR(INDEX($D$3:$E$12, SMALL(IF(($G3=$D$3:$D$12), ROW($D$3:$D$12)-MIN(ROW($D$3:$D$12))+1, ""),COLUMNS($A$1:A1)), 2),"") SHIFT + ENTER组合,因为它是一个数组公式。 现在把formmula拖到右边和下边(估计你的公式需要走多远才能捕获所有的唯一值)。

在这里输入图像说明

然后在单元格J3input此公式=CONCATENATE(K3," ",L3," ",M3," ",N3," ",O3," ") ,并将其拖动到底部(将公式估计为唯一值的估计数)。

在这里输入图像说明

你将需要添加一个帮手列来实现你的目标。

假设你有helper column C ,这是数组公式(意味着你必须点击Ctrl + Shift + Enter ),你应该尝试:

 {=IF(OR(ROW(C1)=1,MAX(--($A$1:A1=A2)*ROW($A$1:A1))=0),B2,INDEX($C$1:C1,MAX(--($A$1:A1=A2)*ROW($A$1:A1)))&", "&B2)} 

现在在column G假设这是你想得到结果的地方,你可以input这个数组公式(意味着你必须点击Ctrl + Shift + Enter ):

 {=IFERROR(INDEX($A$2:$C$11,MAX(--($A$2:$A$11=E2)*ROW($A$2:$A$11))-1,3),"")} 

这样你应该得到你期待的结果。

有一个简单的方法来做到这一点。 :)请参阅这个Google表格以获得一个工作示例。

您可以使用FILTER和JOIN函数来实现这一点:

=iferror(join(", ", filter(E$3:E$12, D$3:D$12 = G3)))

在上面的示例中,FILTER函数将查看单元格D3:D12并尝试查找与G3的值匹配的行。 对于匹配的行,FILTER函数返回单元格E3:E12的值作为数组。

JOIN用于连接数组项目和中间的逗号。

最后,IFERROR摆脱由于FILTER不匹配而导致的N/A错误。

(荣誉原始的答案在这里https://stackoverflow.com/a/23367059/36817