【问题标题】:Array formula result concatenated into single cell将数组公式结果连接到单个单元格中
【发布时间】:2012-12-08 04:01:50
【问题描述】:

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

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

【问题讨论】:

    标签: excel vba formula user-defined-functions


    【解决方案1】:

    在单元格 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),"")
    

    【讨论】:

      【解决方案2】:

      您要查找的公式是(在 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+输入

      和 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 中的最终建议公式: > =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,"")) ctrl+shift+enter 我在你的 if 语句中到处都能看到这些分号。哎哟!否则一流!非常喜欢 Apostolos。
      • @St4n1ey 使用分号与逗号是一种区域设置。发布的公式没有任何问题。
      猜你喜欢
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-15
      • 2021-05-12
      • 2020-04-01
      • 1970-01-01
      相关资源
      最近更新 更多