2012-12-20 256 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使用分號與逗號是區域設置。發佈的公式沒有任何問題。 –

相關問題