Excel跨多工作表对应单元格求和,如何将引用文本传入SUM函数
Excel跨表同位置单元格求和解决方案
方案1:直接复用你已生成的引用文本串
如果你已经通过TEXTJOIN拼接好的引用串(格式如Sheet1!$B$2,Sheet2!$B$2...)存在Summary表的A1单元格,用宏表函数EVALUATE即可直接转换计算:
- 选中要输出求和结果的单元格,按
Ctrl+F3调出名称管理器 - 点击「新建」,自定义名称(例如
CAL_SUM),引用位置输入=EVALUATE("SUM("&Summary!$A$1&")")后保存 - 回到目标单元格输入
=CAL_SUM即可得到求和结果
注意:该方案需要将文件保存为
.xlsm启用宏格式,后续你拼接的引用串更新时,结果会自动同步。
方案2:无需拼接文本的3D引用方案(更易维护)
如果所有待求和工作表都排布在Summary表的同一侧,且没有不需要参与求和的其他业务表,直接用3D引用公式即可,不需要额外做VBA取表名、拼接文本的操作:=SUM('Sheet1:Sheet7'!$B$2)
后续新增工作表时,只要把新表拖到公式里首尾两个工作表(即Sheet1和Sheet7)的中间区间,求和结果会自动包含新表的对应单元格值,无需手动修改公式。
方案3:无宏兼容公式方案
如果不想保存为启用宏的格式,可以调整你现有的VBA逻辑,不要拼接逗号分隔的引用串,而是把所有工作表名单独存放在Summary表的某一列(例如C列C1:C7),用以下公式求和:=SUMPRODUCT(N(INDIRECT(C1:C7&"!$B$2")))
若你的工作表名包含空格或特殊字符,公式调整为
=SUMPRODUCT(N(INDIRECT("'"&C1:C7&"'!$B$2")))即可,新增工作表时只要VBA把新表名追加到对应列,公式自动更新结果。
内容的提问来源于stack exchange,提问作者Duc Nguyen
相关产品推荐
相关产品推荐

