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

bsh*_*ett 2 excel formula user-defined-functions

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

Task #    Description    Blocked on    Blocking
-----------------------------------------------
1         Task 1         2             
2         Task 2                       $formula
3         Task 3         2             
Run Code Online (Sandbox Code Playgroud)

我希望单元格D3中的公式返回"1,3"(将多个值放入Blocked On单元格中也很棒).我现在用以下公式返回"1":

=(INDEX($A2:$A999,MATCH(A3,$C2:$C999,0)))
Run Code Online (Sandbox Code Playgroud)

Apo*_*s55 5

您正在寻找的公式是(在d3中):= IF($ C $ 2:$ C $ 999 = $ A4; $ A $ 2:$ A $ 999;"")+ ctrl + shift + enter

确保将其作为数组输入

(注意:您可能还需要更改;,取决于您的区域设置)

如果C匹配的当前Ai中的数据,这将返回A的内容.你现在只能看到一个结果,因为结果是数组,但是如果你使用Transpose()并在同一行中选择多个单元格,那么使用F2然后按ctrl + shift +输入你将看到连续的所有结果!例如:选择D3:K3,按F2,写公式:=转置(IF($ C $ 2:$ C $ 999 = $ A4; $ A $ 2:$ A $ 999;"")),按ctrl + shift + enter .. (再次你可能需要写:=转置(IF($ C $ 2:$ C $ 999 = $ A4,$ A $ 2:$ 999美元,"")))

但是你必须在右边有很多列,因为空结果仍然占据列!即使处理空字符串以不占用任何列,仍然存在未知结果列的问题.所以我建议使用一个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
Run Code Online (Sandbox Code Playgroud)

  • 简单有效!好一个.想给你一些积分,但我需要在这个网站上有一些声誉(好的或坏的).几个修正:> D3中最终提出的公式:> = MyConCat(" - "; IF($ C $ 2:$ C $ 999 = $ A2; $ A $ 2:$ A $ 999;""))+ ctrl + shift + enter不知道为什么你有分号(;)应该是逗号:= MyConCat(" - ",IF($ C $ 2:$ C $ 999 = $ A2,$ A $ 2:$ A $ 999,""))<kbd> ctrl </ kbd> + <kbd> shift </ kbd> + <kbd>输入</ kbd>我在if语句中到处都看到这些分号.哎哟! 顶尖的!非常喜欢Apostolos. (2认同)