2012-06-21 58 views
2

我试图使用SUMPRODUCT公式从特定的星期(C日期)和房间(E - 文本)获取钱的总和(O数) - 文本)。SUMIFS和数组中的多个查找

=SUMPRODUCT(--(A2:A3000=S2);--(E2:E3000=R2);--(WEEKNUM(C2:C3000)=3);O2:O3000) 

这在一次查找一个组织者时效果很好。

如何修改此公式以同时查找多个组织者?组织者在S2:S10中列出。

我想类似如下:

=SUMPRODUCT(--(A2:A3000=S2 OR S3 etc.);--(E2:E3000=R2);--(WEEKNUM(C2:C3000)=3);O2:O3000) 

而且 - 这可以用更快的SUMIFS一个简单利落的方式来完成?

回答

2

可以在列中使用MATCH这样

=SUMPRODUCT(--ISNUMBER(MATCH(A2:A3000;S2:S10;0));--(E2:E3000=R2);--(WEEKNUM(C2:C3000+0)=3);O2:O3000)

对于SUMIFS你所需要的周数的辅助柱......

随着周数Z尝试

=SUMPRODUCT(SUMIFS(O:O;A:A;S2:S10;E:E;R2;Z:Z;3))

假定在S2:S10中不重复,否则您将重复计数。请注意,SUMPRODUCT仅汇总由SUMIFS创建的数组(由于S2:S10具有九个值) - 后一个函数完成了艰苦的工作,因此它应该更快

顺便说一句我不确定您的原始公式会起作用因为WEEKNUM通常不会接受一个范围....但它除了一个阵列,因此+0在我的版本.....

+0

工程就像一个魅力。我的不好在+0。你能解释为什么+0允许它被接受为一个数组? – ThEvensen

+1

没问题 - C2:C3000显然是一个范围,但是当你对它进行某种计算时,无论是使用函数还是运算符,都可以将它转换为数组。 YEAR(C2:C3000)或C2:C3000 + 0。显然你希望操作保持不变,所以加零或乘以1就可以做到这一点。在Excel 2003中,WEEKNUM不接受数组或范围,但在后来的版本中,它仅接受数组,因此需要转换为数组(注意:如果范围包含任何文本,这可能会有问题,因为使用+0会给你一个#VALUE!错误和公式将失败) –