2016-02-26 46 views
0

我正在絞盡腦汁關於如何做到這一點,經過多次使用SUMIF,陣列,SUMPRODUCT的試驗後,我無法接近任何解決方案,所以我希望有人可以提供幫助。SUMIF對數據與XOR條件

鑑於以下數據,我希望每個「周」列的底部都有一筆總和,該總和爲該周第一列中每個項目的值。值得注意的是,它應該只計算每個項目的價值,如果它們可用(但從來都不是),則採用實際或預測。如果兩者都可用,則實際值應該用於預測值。

最下面的一行顯示了每列的正確總數,以及我想爲此計算出的公式。

請注意,由於工作表的結構,我需要在沒有輔助列的情況下執行此操作,並且可能無法按正確的順序添加項目(即可能會變爲實際,預測,實際,預測)。此外,將有多達50個獨特的項目,所以我真的需要一個更通用的公式,將適用於許多項目。

    Week1 Week2 Week3 Week4 Week5 
Item1 Actual 500 0  100 0 
Item2 Actual 400 100    0 
Item1 Forecast 200 200  300    200 
Item2 Forecast 100 0      100 

        900 100  100 0  300 
+0

爲什麼300周第2? 0與空白相同嗎?它不應該是100嗎?第3周爲什麼要用400?沒有Item2的數據和Item1的兩個條目,它不應該是100嗎? – zaptask

+0

如果您遇到這種數據結構,那麼我會使用VBA解決方案。但是,如果你可以改變數據結構,你就可以使用SUMIF而不用太費勁。 – dev1998

+0

@zaptask,Doh!對不起,這兩個應該是100. –

回答

1

我不相信有可能完全用公式完成此操作,也沒有幫助列。我想出了一個使用公式和只有一個幫助列的解決方案。

給出的表是建立這樣的...

enter image description here

...你需要做到以下幾點:

  • 輸入=OR(COUNTIF(A$2:A$7,A2)=1,B2="Actual")到I2
  • 複製配方覆蓋所有項目
  • 輸入=SUMIF($I2:$I7,TRUE,C2:C7)進入C9
  • 將公式複製到右側覆蓋所有星期

I2中的公式計算與當前項目匹配的項目數。如果總共有一個共有兩個,但當前一個是「實際」,那麼它將放入TRUE,否則放入FALSE。 (我假設你只有一個「預測」和一個「實際」每個項目,如果不是這樣,請告訴我)

有了這個幫手列,SUMIF公式非常簡單 - - 它只是增加了,對於那個星期有在列TRUE在單獨的工作表

助手列中的值,如果你絕對不能把工作表Sheet1上的輔助式(或任何您的工作表的名稱是),您可以添加一個新工作表(工作表2),並將幫助器列放在該工作表上。在這種情況下,你需要做到以下幾點:

  • 輸入=OR(COUNTIF(Sheet1!A$2:A$7,Sheet1!A2)=1,Sheet1!B2="Actual"))成片。2,A2
  • 將公式複製到覆蓋所有(與您現有的工作表的名稱替換工作表Sheet1)
  • 輸入=SUMIF(Sheet2!$A2:$A7,TRUE,C2:C7)到C9
  • 將公式複製到右側(與你的新工作表的名稱替換Sheet2的),以覆蓋所有的周
+1

聰明,謝謝!我應該說我不想要一噸幫手專欄,但是一個很好。感謝您花時間幫助我。 –

1

這應做到不使用輔助列。

=SUMPRODUCT((COUNTIFS($A$2:$A$5,$A$2:$A$5,C2:C5,"")+($B$2:$B$5="Actual")>0)*1,C2:C5) 

確認使用Ctrl + Alt +輸入

這是公式Week1即小區C7。