是否有可能从阵列式取的返回值并把它们连接成一个单一的细胞? 例如,我有行的,看起来像这样的项目任务简单的电子表格:
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)))
你正在寻找的公式是(在D3):= IF($ C $ 2:$ C $ 999产品= $ A4; $ A $ 2:$ A $ 999; “”)+ CTRL + SHIFT +输入
请确保您输入它作为一个数组
(注意:您可能还需要改变;要根据您的区域设置)
这将返回A的含量如果C数据匹配的电流艾。 您现在可以看到的只有一个结果,因为结果是数组,但如果使用转置(),并在同一行中选择多个单元格,然后按F2键,然后Ctrl + Shift + Enter键,你会看到在一排所有结果! 例如:选择D3:K3,按F2,写公式:=移调(IF($ C $ 2:$ C $ 999产品= $ A4; $ A $ 2:$ A $ 999; “”)),按CTRL + SHIFT +输入.. (再次,您可能需要写:=移调(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