2015-01-14 53 views
2
 A    B  C 
1 Report Line Data Type Value 
2  1    a   10 
3  1    b   20 
4  1    c   30 
5  2    a   40 
6  2    b   50 
7  2    c   60 
8  3    a   70 
9  3    b   80 
10 3    c   90 


    E   F 
1 Report Report Line 
2  1   1 
3  1   3 
4  2   2 
5  2   3 

您好,的Excel - 總結與多個標準中的一個表以兩種

在上述例子中

,第一表顯示其每個可以屬於一個或多個報告的報告行。第二個表格顯示哪個報告行屬於哪些報告。

如何彙總C列中的所有行,其中E:F中給出的表中屬於報表2的行的數據類型爲「a」?這應該是40 + 70 = 110。

我想這樣做沒有引用任何標準範圍以外的這兩個表,一個單元格中的一個公式。試圖尋找所有我能想到的匹配,索引,sumifs,sumproduct ...

非常感謝。

+1

你能索引你的第二個表,你的第一個?即添加一個表示「報告」的列,但是對於每條記錄?那麼這很容易。 – DaveRGP

+0

我正試圖避免這種方法。 – gorkas

回答

1

可以使用以下數組公式(由CTRL + SHIFT輸入 + ENTER):

=SUMPRODUCT(
    C2:C10, 
    --(B2:B10="a"), 
    --(ISNUMBER(MATCH(A2:A10,IF(E2:E5=2,F2:F5),0)))) 

說明(也參見Excel vocabulary to find solutions faster):

  • IF(E2:E5=2,F2:F5)陣列內部公式將檢查E2到E5中的每個單元格,如果它等於2,它將從F-colu附加相應的值如果不是,它會將FALSE附加到輸出數組
  • MATCH(A2:A10, inner_array, 0)將inner_array作爲正常參數,但因爲第1個參數應該只有1個值,所以在數組公式中,它會檢查從A2到A10的每個單元對於提供的inner_array而言,如果匹配被找到,則它在inner_array內追加位置,如果不匹配,則將#N/A!附加到輸出數組
  • ISNUMBER(array)當在數組公式中檢查每個元素時,將TRUE或FALSE附加到輸出數組
  • --(boolean_array)將數組中的每個項目從布爾值轉換爲0或1
  • SUMPRODUCT(range, array, array)將在提供的範圍或陣列在每個相應的位置上乘號,那麼這將總結所有的結果
+0

謝謝,這是令人印象深刻的,我希望我有一天會明白這個公式。還要感謝詞彙文章,非常有用。 – gorkas

+0

@gorkas我添加了一個解釋,希望它有幫助,請不要忘記接受答案,如果它解決了您的問題:) – Aprillion