You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在含多级下拉列表的多工作表Excel工作簿中统计指定用户的各项目总数量?

如何在含多级下拉列表的多工作表Excel工作簿中统计指定用户的各项目总数量?

嗨,我来帮你搞定这个跨工作表统计的需求~

首先我先理清楚你的场景:你有31个分别命名为1到31的工作表,每个表里都有用户(C列)和项目(D列)的下拉选择,同一个用户和项目可能在单表或多表中重复出现。现在想在汇总表里选一个用户,自动算出这个用户每个项目在所有工作表中的总出现次数,对吧?

你已经能用=COUNTIFS('15'!$C:$C, E4, '15'!$D:$D, E5)统计单表的结果,那只要把这个逻辑扩展到所有31个表就行,给你两个实用的方法:

方法一:适合所有Excel版本(兼容性强)

在汇总表的统计单元格里输入这个公式:

=SUMPRODUCT(COUNTIFS(INDIRECT("'"&ROW(1:31)&"'!$C:$C"), E4, INDIRECT("'"&ROW(1:31)&"'!$D:$D"), E5))

我给你拆解下这个公式的逻辑:

  • ROW(1:31)会生成1到31的连续数字,刚好对应你的工作表名称;
  • INDIRECT("'"&ROW(1:31)&"'!$C:$C")会把数字转换成对应的工作表列引用,比如'1'!$C:$C、'2'!$C:$C直到'31'!$C:$C;
  • COUNTIFS会对每个工作表单独统计符合用户(E4)和项目(E5)的数量;
  • 最后SUMPRODUCT把所有工作表的统计结果加总,得到总数。

方法二:适合Excel 365/2021(更简洁)

如果你用的是支持动态数组的Excel版本,还能换成更直观的写法:

=SUM(COUNTIFS(INDIRECT("'"&SEQUENCE(31)&"'!$C:$C"), E4, INDIRECT("'"&SEQUENCE(31)&"'!$D:$D"), E5))

这里用SEQUENCE(31)代替ROW(1:31),生成1到31的序列,逻辑和方法一完全一样,只是写法更清晰。

几个实用小贴士

  1. 提升性能:公式里用了整列引用($C:$C),如果你的数据不是整列都有内容,建议改成固定范围,比如$C$2:$C$1000,这样Excel不用扫描整列,计算会更快;
  2. 项目下拉优化:可以给汇总表的项目列做个自动更新的下拉列表,把所有工作表里的项目去重后作为选项,用这个公式就能生成所有唯一项目:
    =UNIQUE(VSTACK(INDIRECT("'"&SEQUENCE(31)&"'!$D:$D")))
    
    把这个公式的结果作为数据验证的来源,就能直接选择项目,不用手动输入啦;
  3. 注意工作表稳定性:如果之后有工作表改名或被删除,公式会报错,所以尽量保持1到31的工作表名称不变哦。

备注:内容来源于stack exchange,提问作者SCT73

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 13:08:12