阵列式结果级联成单个细胞(Array formula result concatenated int

2019-07-17 11:41发布

是否有可能从阵列式取的返回值并把它们连接成一个单一的细胞? 例如,我有行的,看起来像这样的项目任务简单的电子表格:

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)))

Answer 1:

你正在寻找的公式是(在D3):= IF($ C $ 2:$ C $ 999产品= $ A4; $ A $ 2:$ A $ 999; “”)+ CTRL + SHIFT +输入

请确保您输入它作为一个数组

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

这将返回A的含量如果C数据匹配的电流艾。 您现在可以看到的只有一个结果,因为结果是数组,但如果使用转置(),并在同一行中选择多个单元格,然后按F2键,然后Ctrl + Shift + Enter键,你会看到在一排所有结果! 例如:选择D3:K3,按F2,写公式:=移调(IF($ C $ 2:$ C $ 999产品= $ A4; $ A $ 2:$ A $ 999; “”)),按CTRL + SHIFT +输入.. (再次,您可能需要写:=移调(IF($ C $ 2:$ C $ 999产品= $ A4,$ A $ 2:$ A $ 999 “”))...)

但你必须有很多列在右边,因为空的结果依旧占据列! 即使空字符串处理,以占据任何列,仍然存在未知结果的列的问题。 所以,我提出了一个VBA函数的用法(一个我写了很长一段时间前)来连接有效的结果在一个单元格(与任何你喜欢的分隔符)。

最后提出的公式中D3:= MyConCat( “ - ”; IF($ C $ 2:$ C $ 999产品= $ A2; $ A $ 2:$ A $ 999; “”))+ CTRL + SHIFT +输入

和用于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


文章来源: Array formula result concatenated into single cell