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

如何用INDIRECT函数替换SUM公式中的工作表名称为单元格引用值?

解决Excel INDIRECT结合SUM跨工作表范围引用的问题

问题原因

你尝试的公式=SUM(INDIRECT("'"&$G$30&":2194'!$G$17"))失效的核心原因是:INDIRECT函数无法直接解析拼接后的跨工作表范围格式。它只能识别单个工作表的引用(比如'2197'!$G$17),不能直接处理'2197:2194'!$G$17这种多工作表范围的拼接字符串。

可行解决方法

方法1:用SUMPRODUCT+ROW生成工作表序列(兼容多数Excel版本)

利用ROW函数生成从G30值到2194的所有整数序列,再通过INDIRECT逐个引用对应工作表的G17单元格,最后用SUMPRODUCT求和:

=SUMPRODUCT(INDIRECT("'"&ROW(INDIRECT($G$30&":"&2194))&"'!$G$17"))
  • 原理:ROW(INDIRECT($G$30&":"&2194))会生成从G30数值到2194的连续整数(比如G30=2197时,生成2197,2196,2195,2194),INDIRECT逐个拼接成单个工作表引用,SUMPRODUCT自动对这些值求和。

方法2:用SEQUENCE函数(Excel 365/2021及以上版本)

SEQUENCE可以更直观地生成递减的工作表名称序列,搭配SUM和INDIRECT使用:

=SUM(INDIRECT("'"&SEQUENCE($G$30-2194+1,1,$G$30,-1)&"'!$G$17"))
  • 参数说明:SEQUENCE(行数,列数,起始值,步长),这里行数是$G$30-2194+1(计算需要包含的工作表数量),步长设为-1实现从大到小的序列。

方法3:用EVALUATE解析完整求和公式(需注意版本兼容性)

如果需要直接解析SUM('X:2194'!$G$17)格式的字符串,可以借助EVALUATE函数:

  • 对于Excel 365,可直接用LET函数封装:
    =LET(rangeStr,"'"&$G$30&":2194'!$G$17",EVALUATE("SUM("&rangeStr&")"))
    
  • 旧版本Excel需通过定义名称实现:
    1. 点击公式选项卡→定义名称,输入名称(比如SumSheetRange)
    2. 引用位置填写:=EVALUATE("SUM('"&Sheet1!$G$30&":2194'!$G$17)")(注意替换Sheet1为当前工作表名称)
    3. 在E35单元格输入=SumSheetRange即可

内容的提问来源于stack exchange,提问作者Peter Thailand

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:43:40