替代sumproduct

时间:2013-05-24 02:23:53

标签: excel excel-formula

有谁知道更有效的方式来写这个?我似乎在使用excel时遇到了很多问题,因为我的excel电子表格中有大约30个略有不同的版本。

=SUMPRODUCT((Data!B2:B1000="Human Resources")*(Data!E2:E1000<>"Resolved")*(Data!E2:E1000<>"Closed")*(Data!E2:E1000<>"Cancelled"))

我已经研究过了这个问题,但我似乎无法让它工作。

2 个答案:

答案 0 :(得分:3)

COUNTIFS应该完成这项工作,比如

=COUNTIFS(B:B,"Human Resources",E:E,"<>Resolved",E:E,"<>Closed",E:E,"<>Cancelled")

答案 1 :(得分:1)

我认为你所追求的是这样的(注意间距在重点范围之间被夸大,删除以供实际使用):

=SUMPRODUCT((Data!B2:B1000="Human Resources") * (Data!E2:E1000<>"Closed") , (Data!B2:B1000="Human Resources") * (Data!E2:E1000<>"Cancelled" ) , (Data!B2:B1000="Human Resources") * (Data!E2:E1000<>"Resolved" ))

测试数据:

  • 人力资源已解决
  • 人力资源已关闭
  • 取消人力资源
  • 人力资源开放
  • 人力资源黄色
  • 人力资源鸭
  • 人力资源摇滚
  • 人力资源已解决
  • 人力资源已关闭
  • 取消人力资源
  • Parks and Rec 3

预计:4

结果:4

我尝试了相同的公式,将引用更改为指向较大的本地集,随机抽样1000行,没有明显的减速或警告。绝不是标记或优化,但目的很明确。

较大的数据集可能会导致您的计算机耗尽可用索引或原始内存,如果您怀疑是这种情况,请对数据集进行分区并一次执行一个块(也许先尝试将其分成两半尝试500一次完成行),在完成所有块之后对每个块进行求和。

最后一点,对于子孙后代,SUMPRODUCT依赖于版本。如果遇到问题,可以将其更改为严格的SUM公式,只需要更多的工作。