如何在Excel中动态引用工作表名称实现SOMME.SI函数计算
动态引用工作表实现SOMME.SI计算
核心解决方案:使用INDIRECT函数构建动态引用
你之前的写法无法生效,是因为Excel不会自动将单元格文本直接解析为工作表引用,必须通过INDIRECT函数把文本格式的引用转换成实际的单元格区域。针对你的需求,正确公式如下:
=SOMME.SI(INDIRECT("'"&A1&"'!B:B");"something";INDIRECT("'"&A1&"'!C:C"))
公式逻辑:
"'"&A1&"'!B:B"将A1中的月份文本(如2024-02)拼接成标准的工作表区域引用格式'2024-02'!B:BINDIRECT函数将拼接后的文本转换成Excel可识别的实际单元格区域,从而实现动态匹配A1指定的工作表
简化版公式(用LET减少重复代码)
如果不想重复编写INDIRECT语句,可以用LET函数定义变量,让公式更简洁易维护:
=LET(SheetName;A1;RangeB;INDIRECT("'"&SheetName&"'!B:B");RangeC;INDIRECT("'"&SheetName&"'!C:C");SOMME.SI(RangeB;"something";RangeC))
注意事项
- 确保A1中的文本完全匹配目标工作表的名称(包括连字符、大小写),否则会返回
#REF!错误 - 若工作表名称不含空格或特殊字符,单引号可以省略,公式可简化为
INDIRECT(A1&"!B:B"),但保留单引号能兼容所有工作表命名场景
内容的提问来源于stack exchange,提问作者Elikill58
相关产品推荐
相关产品推荐

