2014-09-19 129 views
0

我想看看如何得到這個公式正常工作的例子COUNTIF後filterlist的Excel

= SUMPRODUCT(小計(3,OFFSET($ P $ 7,ROW($ P $ 8:$ P $ 5500) -ROW($ P $ 7),, 1)), - ($ P $ 7:$ P $ 5500 =「74」))

即時通訊要嘗試實現的是計數範圍內的所有單元格,比 零,但我需要得到那個工作後,我應用過濾器。我已經看到了幾個例子,並沒有得到它的工作,與小計fx。

在此先感謝您的幫助!

+1

對不起@修改了pnuts。 – 2014-09-19 16:10:54

+0

正如所引用的公式總是會返回一個錯誤 - 這是因爲SUMPRODUCT需要處理相同大小的數組/範圍,但第一部分中有$ P $ 8:$ P $ 5500,第二部分中有$ P $ 7:$ P $ 5500 - 因爲這些尺寸與您獲得#VALUE的尺寸不一樣!錯誤 - 我注意到Axel的例子糾正了那個 – 2014-09-19 18:00:51

回答

2

工作例如:

O  P 
4 
5   6 
6 
7 Filter Data 
8 1  74 
9 0  74 
10 1  74 
11 0  74 
12 1  74 
13 0  74 

Formula in P5: 
=SUMPRODUCT(SUBTOTAL(103,OFFSET($P$7,ROW($P$8:$P$20)-ROW($P$7),,1)),--($P$8:$P$20=74)) 

現在你可以過濾列O和P5只計算可見74

隨着SUBTOTAL函數103,我真的只算可見單元格。這意味着,手動隱藏的單元格也不計算在內。在函數3中,只有輸出過濾的單元格不計算在內。如果手動隱藏單元格,即使它們不可見,也會對它們進行計數。

而我已經使用值74而不是文本「74」。所以在我的例子中,P列包含數字,而不是文本。

工作原理:

內SUMPRODUCT的分子式爲:在陣列(矩陣)上下文。這意味着它們就像在數組公式中使用一樣處理。

在數組上下文中{ROW($P$8:$P$20)-ROW($P$7)}得到ROW($P$8)-ROW($P$7) = 1, ROW($P$9)-ROW($P$7) = 2, ROW($P$10)-ROW($P$7) = 3等等。

OFFSET($P$7,1,,1)將獲得$ P $ 7 + 1Row = $ P $ 8,OFFSET($P$7,2,,1)將獲得$ P $ 7 + 2Row = $ P $ 9等等。

所以{OFFSET($P$7,ROW($P$8:$P$20)-ROW($P$7),,1)}得到{$P$8,$P$9,$P$10,...}

SUBTOTAL(103, {$P$8,$P$9,$P$10,...})它計數1,如果{$P$8,$P$9,$P$10,...}是可見的,否則爲0。

所以SUMPRODUCT結果

SUMPRODUCT({1,0,1,0,1,0,0,...}, --($P$8:$P$20=74)) 

{($P$8:$P$20=74)}導致{TRUE,TRUE,TRUE,FALSE,TRUE,...}依賴的,如果$ P $ 8:$ P $ 20 = 74。所述--*-1*-1)得到該在數值上下文,使得TRUE = 1和FALSE = 0

所以SUMPRODUCT最終導致

SUMPRODUCT({1,0,1,0,1,0,0,...}, {1,1,1,1,1,1,0,...}) 

問候

阿克塞爾

+0

謝謝你這麼多Axel,用你的例子我默默地明白了這一次,我沒有得到那個偏移行應該是我列的標題。我已經得到了一切正常運行,但是請你詳細解釋這部分背後的細節:OFFSET($ P $ 7,ROW($ P $ 8:$ P $ 20)-ROW($ P $ 7),, 1)), - - – 2014-09-19 18:21:25