Google Sheets中Indirect公式无法引用全部工作表范围的问题及修正
问题原因
INDIRECT函数本身不支持直接接收数组范围作为输入,当你传入H2:H46这种多单元格范围时,它只会读取范围的第一个单元格(H2)内容生成引用,不会自动遍历整个H2:H46的所有工作表名称。这就是为什么单独测试时只返回H2对应工作表的A列数据,最终导致原公式的SUMPRODUCT只统计了一张表的结果,返回值始终为1。
正确统计公式
方法一:用ARRAYFORMULA触发数组运算
=SUMPRODUCT(--(ARRAYFORMULA(COUNTIF(INDIRECT("'"&H2:H46&"'!A:A"),A2))>0))
- 核心逻辑:
ARRAYFORMULA会强制INDIRECT逐个处理H2到H46的每个工作表名称,生成对应表的A列引用;COUNTIF统计每个表中A2数值的出现次数,得到一个45个元素的数组;再将数组里大于0的结果转成1,等于0的转成0;最后用SUMPRODUCT求和,得到目标数值出现过的工作表总数。
方法二:用BYROW遍历工作表名称(逻辑更直观)
=SUM(BYROW(H2:H46,LAMBDA(sheet,--(COUNTIF(INDIRECT("'"&sheet&"'!A:A"),A2)>0))))
- 核心逻辑:
BYROW遍历H2:H46的每个工作表名称,对每个表判断A2数值是否存在(存在返回1,否则返回0);最后用SUM把所有结果加起来,得到统计数。
内容的提问来源于stack exchange,提问作者bkops
相关产品推荐
相关产品推荐

