-1

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

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

我已经研究过countifs,但我似乎无法让它发挥作用。

4

2 回答 2

3

COUNTIFS应该做的工作,像这样

=COUNTIFS(B:B,"Human Resources",E:E,"<>Resolved",E:E,"<>Closed",E:E,"<>Cancelled")
于 2013-05-24T04:30:24.690 回答
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" ))

测试数据:

  • 人力资源解决
  • 人力资源关闭
  • 人力资源取消
  • 人力资源开放
  • 人力资源黄色
  • 人力资源鸭
  • 人力资源摇滚
  • 人力资源解决
  • 人力资源关闭
  • 人力资源取消
  • 公园和娱乐 3

预计:4

结果:4

我尝试了相同的公式,将引用更改为指向更大的本地集,随机抽样 1000 行,并且没有明显的减速或警告。它绝不是基准测试或优化的,但意图非常明确。

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

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

于 2013-05-24T04:21:34.773 回答