数组公式结果连接成单个单元格

是否有可能从数组公式中返回值并将它们连接成单个单元格? 例如,我有一个简单的电子表格,包含项目任务的行,如下所示:

Task # Description Blocked on Blocking ----------------------------------------------- 1 Task 1 2 2 Task 2 $formula 3 Task 3 2 

我希望单元格D3中的公式返回“1,3”(在阻塞单元格中放置多个值也是很好的做法)。 我现在用下面的公式返回“1”:

 =(INDEX($A2:$A999,MATCH(A3,$C2:$C999,0))) 

你正在寻找的公式是(在D3):= IF($ C $ 2:$ C $ 999 = $ A4; $ A $ 2:$ A $ 999;“”)+ ctrl + shift + enter

确保你input数组

(注意:您可能还需要更改;要根据您的区域设置)

这将返回A的内容,如果C中的数据匹配当前的Ai。 现在只能看到一个结果,因为结果是数组,但是如果使用Transpose()并在同一行中select多个单元格,那么使用F2然后按Ctrl + Shift + Enter,您将看到连续的所有结果! 例如:selectD3:K3,按F2,写公式:=移调(IF($ C $ 2:$ C $ 999 = $ A4; $ A $ 2:$ A $ 999;“”)),按ctrl + shift + enter。 (再次你可能需要写:=移调(IF($ C $ 2:$ C $ 999 = $ A4,$ A $ 2:$ A $ 999,“”))…)

但是你必须有很多列,因为空的结果仍然占据列! 即使处理空string不占用列,仍然存在未知结果列的问题。 所以我build议使用一个VBA函数(我刚刚写了一个函数)来连接一个单元格中的有效结果(使用任何你喜欢的分隔符)。

最后在D3中提出公式:= MyConCat(“ – ”; IF($ C $ 2:$ C $ 999 = $ A2; $ A $ 2:$ A $ 999;“”)) + ctrl + shift + enter

和代码MyConCat(放置在VBA代码区的模块中):

 ' MyConCat ' ' Very simple By Apostolos Goulandris Function MyConCat(myDelimiter As String, Avar) As String Dim b As Variant, Dum As String If IsMissing(myDelimiter) Then myDelimiter = "" For Each b In Avar Dum = IIf(Len(b) > 0, Dum & myDelimiter & b, Dum) Next MyConCat = IIf(Len(myDelimiter) > 0, Mid(Dum, Len(myDelimiter) + 1, Len(Dum)), Dum) End Function