[英]Excel 2013 - Sum with a date range
美好的一天,我終於決定尋求幫助。 我有1個工作簿,多個工作表。 公式給了我#值! 我了解它的數據類型錯誤。 我只是想查看1列日期內的范圍,然后在2個單獨的列中添加一列數字,然后將這2列相除並乘以30。這等於。 SUM(D31 / C31)* 30。 僅使用數字時,此小公式非常有用。 我將總小時數除以生產量乘以每小時30美元。 顯然,我將在一年中的每個月執行此操作。
2張紙的標簽如下。 下面的公式位於“每月”工作表中。 它是參考表“總成本”。 我希望我能給您足夠的信息,也許您也許有時間來幫助我。 注意:我的范圍相當長,因為它應該可以全年工作,所以我使其深度達到10,000行。
式:
=SUMPRODUCT(('Overall Cost'!$B$3:$B$10000<=DATE(2015,9,30))*('Overall Cost'!$B$3:$B$10000>=DATE(2015,9,1)),SUM(('Overall Cost'!$D$3:$D$10000)/SUM('Overall Cost'!$C$3:$C$10000))*30)
樣本數據:
"B" "C" "D"
SQ FT Hours
Date OH OH
Wednesday 8/10/15 3427 232
Thursday 8/11/15 5536 232
Friday 8/12/15 2364 232
Monday 8/1/15 6408 232
Tuesday 9/4/15 2499 232
Wednesday 9/5/15 870 232
您不能在這樣的SUMPRODUCT函數中使用SUM函數 。 SUMPRODUCT嘗試逐行處理每一行,並且SUM將所有行總計為一個圖形。
您還將獲得#DIV/0!
由於SUMPRODUCT強大的計算模式而導致的錯誤。 您多余的行(范圍從10000開始)可以被截斷到B列中的日期范圍。由於它們是標准,因此可以推斷出C列和D列中的最后一個日期之后的行中沒有數字是有意義的。
=SUMPRODUCT(('Overall Cost'!B$3:INDEX('Overall Cost'!B:B, MATCH(1E+99, 'Overall Cost'!B:B ))<DATE(2015, 10, 1))*
('Overall Cost'!B$3:INDEX('Overall Cost'!B:B, MATCH(1E+99, 'Overall Cost'!B:B ))>=DATE(2015, 9, 1)),
'Overall Cost'!$D$3:INDEX('Overall Cost'!D:D, MATCH(1E+99,'Overall Cost'!B:B)),
30/'Overall Cost'!$C$3:INDEX('Overall Cost'!C:C, MATCH(1E+99,'Overall Cost'!B:B )))
我還調整了您的數學層次結構。 列C和D的除法運算與列D乘以C上30所產生的分數的乘積相同。
如果您在C列中沒有零值,則應該沒問題。 如果這樣做,則可能必須引入IFERROR函數或其他條件。該公式還僅將計算限制在沒有空白單元格的空白“安全區域”的情況下。
如果您仍在接收#DIV/0!
錯誤,則C列中必須有空白單元格或具有0的單元格。 #DIV/0!
字面上的錯誤是: 您正在嘗試將數字除以零。
可以使用IFERROR函數解決此問題,但是需要額外的處理層,因此您需要使用Ctrl + Shift + Enter↵來完成以下公式。
=SUMPRODUCT((oc!B$3:INDEX(oc!B:B, MATCH(1E+99, oc!B:B ))<DATE(2015, 10, 1))*
(oc!B$3:INDEX(oc!B:B, MATCH(1E+99, oc!B:B ))>=DATE(2015, 9, 1)),
oc!$D$3:INDEX(oc!D:D, MATCH(1E+99,oc!B:B)),
IFERROR(30/oc!$C$3:INDEX(oc!C:C, MATCH(1E+99,oc!B:B )), 0))
遇到#DIV/0!
時,可以通過強制分子為零,分母為1來模擬非CSE公式#DIV/0!
情況。
=SUMPRODUCT((oc!B$3:INDEX(oc!B:B, MATCH(1E+99, oc!B:B ))<DATE(2015, 10, 1))*
(oc!B$3:INDEX(oc!B:B, MATCH(1E+99, oc!B:B ))>=DATE(2015, 9, 1))*
(oc!$C$3:INDEX(oc!C:C, MATCH(1E+99,oc!B:B ))<>0),
oc!$D$3:INDEX(oc!D:D, MATCH(1E+99,oc!B:B)),
30/(oc!$C$3:INDEX(oc!C:C, MATCH(1E+99,oc!B:B ))+
(oc!$C$3:INDEX(oc!C:C, MATCH(1E+99,oc!B:B ))=0)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.