2012-12-20 225 views
2

是否可以从数组公式中获取返回值并将它们连接到单个单元格中?例如,我有行项目任务的一个简单的电子表格,看起来像这样:将单元格公式结果连接成单个单元格

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

回答

4

你正在寻找的公式是(在D3):= IF($ C $ 2:$ C $ 999产品= $ A4; $ A $ 2:$ A $ 999; “”)+ Ctrl + Shift + Enter

确保您输入它作为一个阵列

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

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

简单有效!好一个。想给你一些观点,但我需要一些声誉(好或坏)在这个网站上。更正夫妇: > D3中的最终建议公式: > = MyConCat(“ - ”; IF($ C $ 2:$ C $ 999 = $ A2; $ A $ 2:$ A $ 999;“”))+ ctrl + shift +输入不知道为什么你有分号(;)应该是逗号:= MyConCat(“ - ”,IF($ C $ 2:$ C $ 999 = $ A2,$ A $ 2:$ A $ 999,“”))ctrl + shift + enter我在你的if语句中随处可见这些分号。哎哟! 否则顶尖! 非常喜欢它Apostolos。 – St4n1ey

+0

@ St4n1ey使用分号与逗号是区域设置。发布的公式没有任何问题。 –

相关问题