繁体   English   中英

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

[英]Array formula result concatenated into single cell

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

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

我希望单元格 D3 中的公式返回“1, 3”(将多个值放入 Blocked On 单元格中也很好)。 我目前已经使用以下公式返回“1”:

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

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

确保将其作为数组输入

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

如果 C 中的数据与当前 Ai 匹配,这将返回 A 的内容。 您现在只能看到一个结果,因为结果是数组,但是如果您使用 Transpose() 并选择同一行中的多个单元格,然后使用 F2 然后按 ctrl+shift+enter 您将看到一行中的所有结果:例如:选择D3,K3,按F2:写公式:=Transpose(IF($C$2;$C$999=$A4:$A$2;$A$999,""))。 按 ctrl+shift+enter..:(你可能需要再次写:=Transpose(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+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

在单元格 D3 中试试这个。 输入数组公式 Ctrl + Shift + Enter。

=IFERROR(LEFT(SUBSTITUTE(CONCAT(IF(A3=C2:C4,A2:A4)&"-"),"FALSE-",""),LEN(SUBSTITUTE(CONCAT(IF(A3=C2:C4,A2:A4)&"-"),"FALSE-",""))-1),"")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM