2012-08-13 134 views
2

考慮以下幾點:Excel條件SUMPRODUCT

A B C 
---------------- 
1 a c 1 
2 b f 2 
3 a c 3 
... 
6 a c 4 

的這裏的目標是使用條件SUMPRODUCT這樣,當在各自列第6行的匹配值的值時,SUMPRODUCT計算。這是有趣的事情。

當使用:

=SUMPRODUCT((A3:A5=A1),(B3:B5=B1),C3:C5) 

輸入參數被評估爲:

=SUMPRODUCT({TRUE, FALSE, TRUE},{TRUE, FALSE, TRUE},{1, 2, 3}) 

但結果爲0

現在鑄造布爾TRUEs和FALSEs當其1和0對應'之前'用數學運算符評估公式,正確結果填入:

=SUMPRODUCT(--(A3:A5=A1),--(B3:B5=B1),C3:C5) 

=SUMPRODUCT(ABS(A3:A5=A1),ABS(B3:B5=B1),C3:C5) 

=SUMPRODUCT((A3:A5=A1)^2,(B3:B5=B1)^2,C3:C5) 

等等,

最終計算結果爲1和0,一旦數學運算應用,

=SUMPRODUCT({1, 0, 1},{1, 0, 1},{1, 2, 3}) 

我們得到道具呃價值。

我們一直在用Excel思考問題,似乎無法正確評估它自己的輸入。我們認爲有一行代碼遺漏了將TRUE和FALSE轉換爲1和0的SUMPRODUCT編譯代碼,並且錯誤捕獲僅返回0.

有什麼想法?

+0

如果您可以提供更多關於您正在做什麼的細節,或許可以使用示例電子表格,我可以爲您提供幫助。我們幾乎在所有工作簿中都使用sumproduct()。 – ApplePie 2012-08-13 22:19:09

+0

對你有用的各種東西都是通過對它們執行操作來強制Trues和False爲1和0。你也可以做'= SUMPRODUCT((A3:A5 = A1)*(B3:B5 = B1),C3:C5)',它會起作用。 – 2012-08-13 22:57:54

+0

同意強制爲1和0.我想了解爲什麼我必須首先強制爲1和0。 – 2012-08-13 23:46:16

回答

2

大多數功能不強制爲數字邏輯值在數組參數,和IMHO它是優選的一致性的側犯錯,而不是幾個功能引入新的行爲。強制也有相關的性能開銷,所以應該只在需要時執行。

這就是說像AVERAGEAVARA,加等一些額外的功能,即做處理邏輯值作爲數字(和文本值爲零),所以我想可能已添加一個SUMPRODUCTA功能太多,但可能也增加混亂,應用程序膨脹。我相信這些的目的是爲了與Lotus 123兼容。還有一個設置轉換公式評估Excel選項|先進的,它激活時會將TRUE/FALSE視爲計算中的數字,如SUM,但許多函數似乎沒有如預期的那樣對此作出響應。

+0

良好的信息,+1。 – 2012-08-14 14:47:28

+0

我們接受了一個採訪,問我們如何做一個有條件的產品。他使用了 - 這讓我們感到好奇,並導致了1.5小時的調查。這項調查導致了我們的問題。 – 2012-08-15 14:04:54

2

我環顧四周,甚至在查爾斯威廉姆斯的網站上也沒有找到答案,爲什麼它以這種方式工作。我認爲這是一種編程選擇,在其原始「本地」(全部逗號)形式中,Sumproduct僅對數字進行操作,並將任何非數字單元格視爲零。

通過這種方式,A1中引用B1:C3的Sumproduct公式將B1中的TRUE與「strimp099」中的TRUE對待爲零。考慮到Sumproduct的原始,相當行人,意圖以及平均用戶可能期望的結果,我認爲這是有道理的。

enter image description here