根据标准join/连结列文本

我有这样的数据集:

ABC ---------- 1 A blue 1 A red 1 B blue 2 A red 3 B blue 3 B green 3 C blue 4 C blue 4 A blue 4 A green 

和这样一个单独的表(这已经使用UNIQUE()自动生成):

 EFG ----- 1 A 1 B 2 A 3 B 3 C 4 C 4 A 

我想joinC列中的文本,并根据列E和F中给出的条件在G列中显示结果。我正在查找的结果如下所示(所有连接/连接的文本应该在列G中):

 EFG ----- 1 A blue red 1 B blue 2 A red 3 B blue green 3 C blue 4 C blue 4 A blue green 

可选,不需要,但会很好:生成的文本之间的分隔符是一个行制动,所以每行都在同一行内的一个单独的行。

谢谢。

将第一个表(数据表/ 1,2,3)放在A列到C,另一个表(5,6,7)放在E到G列

在G2中input下面的数组公式

 {=CONCAT(IF(A2:A11&B2:B11=E2&F2,C2:C11&" ",""))} 

你会得到你的结果。

在这里输入图像描述

对于较早的版本,我们需要创buildUDF

 Function ConcatUDF(rng() As Variant, ByVal delim As String) As String Dim a, i As Long For i = 1 To UBound(rng, 1) If rng(i, 1) <> "" Then ConcatUDF = ConcatUDF & _ IIf(ConcatUDF = "", "", delim) & rng(i, 1) End If Next End Function 

我们会得到结果。

在这里输入图像描述

编辑:

我忘了绝对的参考。 请考虑以下提及的公式。

与CONCAT公式为Excel 2016build立

 =CONCAT(IF($A$2:$A$11&$B$2:$B$11=E2&F2,$C$2:$C$11&" ","")) 

与用于早期版本的Excel的UDF

 =ConcatUDF(IF($B$2:$B$11&$A$2:$A$11=F2&E2,$C$2:$C$11,"")," ")