将数组公式结果串联到单个单元格中

问题描述 投票:2回答:2

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

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 user-defined-functions formula
2个回答
5
投票

您要查找的公式是(在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(“-”; I​​F($ 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


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

© www.soinside.com 2019 - 2024. All rights reserved.