如何统计Excel工作簿指定非连续列中目标字符串的出现次数?
跨52个工作表统计非连续列中指定字符串的出现次数
方法一:SUMPRODUCT + INDIRECT(兼容多数Excel版本)
针对你的需求,目标列是F、I、L……AM(对应列号6、9、12……39,共12列,公差为3),可通过以下公式实现统计:
=SUMPRODUCT(COUNTIF(INDIRECT("'"&Sheet1:Sheet52&"'!"&CHAR(64+{6,9,12,15,18,21,24,27,30,33,36,39})&":"&CHAR(64+{6,9,12,15,18,21,24,27,30,33,36,39})),"NOR"))
- 若你的工作表不是
Sheet1到Sheet52这类连续命名,可先在空白区域(如某工作表的A1:A52)逐个输入所有工作表名称,再将公式中的Sheet1:Sheet52替换为该区域(如A1:A52)。 - 老版本Excel需按
Ctrl+Shift+Enter执行数组输入,365/2021版本直接按Enter即可。
方法二:Excel 365动态数组方案(更简洁)
利用动态数组函数简化公式:
=COUNT(TOCOL(INDIRECT("'"&Sheet1:Sheet52&"'!"&CHAR(64+SEQUENCE(12,1,6,3))&":"&CHAR(64+SEQUENCE(12,1,6,3))),2)="NOR")
SEQUENCE(12,1,6,3)自动生成6到39步长为3的列号序列,无需手动枚举。TOCOL将所有跨表目标区域合并为一维数组并忽略空值,最终通过COUNT统计匹配"NOR"的次数。
此前尝试失败的常见原因
- COUNTIF本身不支持同时跨多工作表+非连续区域的直接引用,必须拆分区域后汇总。
- 跨工作表的非连续命名区域在函数调用时兼容性差,容易导致引用失效。
- SUM(COUNTIF(...))的写法若未处理好数组维度或工作表引用逻辑,会因参数格式错误返回结果异常。
内容的提问来源于stack exchange,提问作者Ohto Nordberg
相关产品推荐
相关产品推荐

