Excel跨表INDIRECT+COUNTIFS公式在Google Sheets中结果异常求助
Excel与Google Sheets公式差异及解决方案
问题核心差异
原Excel公式在Google Sheets中失效的关键原因是数组迭代逻辑不同:
- Excel中,
ROW($1:$23)生成数组{1,2,...,23},INDIRECT会逐个生成'Call 1'!B2到'Call 23'!B2的单元格引用,COUNTIFS对每个引用单独判断,返回包含23个元素的结果数组(符合条件为1,否则为0),最终SUM求和得到总数。 - Google Sheets中,
COUNTIFS不支持这种数组形式的范围输入,只会处理第一个生成的引用('Call 1'!B2),返回单个布尔值转换后的1或0,因此SUM后始终得到1。
Google Sheets替代公式
针对跨工作表统计Call 1至Call 23中B2日期在C1(起始日期)和D1(结束日期)范围内的数量,使用以下公式:
=SUM(MAP(ROW(1:23), LAMBDA(n, IF(AND(INDIRECT("'Call "&n&"'!B2")>=C1, INDIRECT("'Call "&n&"'!B2")<=D1), 1, 0))))
或更简洁的SUMPRODUCT版本:
=SUMPRODUCT(--(BYROW(ROW(1:23), LAMBDA(x, INDIRECT("'Call "&x&"'!B2")>=C1)), --(BYROW(ROW(1:23), LAMBDA(x, INDIRECT("'Call "&x&"'!B2")<=D1))))
「Call Tracking Sheet」E3/F3适配
若E3/F3需要实现类似统计逻辑,只需调整公式中的工作表命名、目标单元格或判断条件即可。例如E3要统计相同日期范围的数量,直接将上述公式复制到E3,确保C1/D1为「Call Tracking Sheet」内的起始/结束日期单元格。
内容的提问来源于stack exchange,提问作者Amir Shahzad
相关产品推荐
相关产品推荐

