美好的一天,我终于决定寻求帮助了。我有1个工作簿,多个工作表。公式给了我#Value!我知道它有一个错误的数据类型。我只想查看1列日期范围内的一个范围,然后在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
答案 0 :(得分:0)
您不能在SUM function内使用SUMPRODUCT function。 SUMPRODUCT正在尝试逐行处理,并且SUM将所有行合计为一个数字。
由于SUMPRODUCT强大的计算模式,您还会遇到一些#DIV/0!
错误。您的额外行(范围低至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 function或其他标准。此公式还将计算仅限于完全没有空白单元格的空白“安全区”所需的条件。
如果您仍然接收#DIV/0!
错误,那么C列中必须有空白单元格或 0 的单元格。#DIV/0!
错误是从字面上看;你试图将数字除以零。
这可以通过IFERROR function解决,但需要额外的处理层,因此您需要使用 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公式。
=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)))