有谁知道更有效的方法来写这个?我似乎在使用 excel 时遇到了很多问题,给我“系统资源不足”,因为我的 excel 电子表格中有大约 30 个略有不同的版本。
=SUMPRODUCT((Data!B2:B1000="Human Resources")*(Data!E2:E1000<>"Resolved")*(Data!E2:E1000<>"Closed")*(Data!E2:E1000<>"Cancelled"))
我已经研究过countifs,但我似乎无法让它发挥作用。
有谁知道更有效的方法来写这个?我似乎在使用 excel 时遇到了很多问题,给我“系统资源不足”,因为我的 excel 电子表格中有大约 30 个略有不同的版本。
=SUMPRODUCT((Data!B2:B1000="Human Resources")*(Data!E2:E1000<>"Resolved")*(Data!E2:E1000<>"Closed")*(Data!E2:E1000<>"Cancelled"))
我已经研究过countifs,但我似乎无法让它发挥作用。
COUNTIFS
应该做的工作,像这样
=COUNTIFS(B:B,"Human Resources",E:E,"<>Resolved",E:E,"<>Closed",E:E,"<>Cancelled")
我认为你所追求的是这样的(注意间距在强调范围之间被夸大,实际使用时删除):
=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" ))
测试数据:
预计:4
结果:4
我尝试了相同的公式,将引用更改为指向更大的本地集,随机抽样 1000 行,并且没有明显的减速或警告。它绝不是基准测试或优化的,但意图非常明确。
较大的数据集可能会导致您的机器耗尽可用索引或原始内存,如果您怀疑是这种情况,请对数据集进行分区并一次执行一个块(也许首先尝试将其分成两半,一次尝试 500 行),在所有块完成后对每个块求和。
最后一点,对于后代,SUMPRODUCT 相当依赖于版本。如果遇到问题,可以将其更改为严格的 SUM 公式,只需多做一点工作。