Google Sheets中跨表调用运行存储为文本的同一公式的问题
问题根因
INDIRECT 函数仅支持将符合单元格/区域引用格式的文本转换为实际引用,本身没有解析、执行任意公式文本的能力,因此你用它调用存储的公式文本报错属于正常情况,既不是写法错误,也不是实现思路有问题,只是选的工具不符合需求。
可行实现方案
方案1:使用EVALUATE宏表函数(无需写VBA,轻量化适配需求)
这是最贴合你当前使用场景的方案,操作步骤:
- 打开需要调用公式的工作表(示例中的Sheet2),点击「公式」选项卡→「定义名称」
- 名称栏自定义填写,例如
执行公共公式,引用位置填写=EVALUATE(Sheet1!$A$1),点击确认保存 - 后续在Sheet2的任意单元格输入
=执行公共公式,即可直接运行Sheet1!A1中存储的公式文本
注意事项:
- EVALUATE属于宏表函数,工作簿需要保存为
.xlsm(启用宏的工作簿)格式才能正常运行 - 如果公式需要适配当前工作表的单元格,存储公式文本时不要加工作表前缀,和你示例中的
concatenate(a1,a2,a3)写法一致即可,默认会读取公式所在工作表的对应单元格内容。
方案2:自定义VBA函数(灵活度更高,支持复杂场景)
如果后续需要扩展逻辑,可通过自定义函数实现,操作步骤:
- 按
Alt+F11打开VBA编辑器,右键当前工作簿名称→插入→模块 - 粘贴以下代码:
Function RUN_FORMULA(formula_text As String) RUN_FORMULA = Application.Evaluate(formula_text) End Function
- 保存为
.xlsm格式后,在任意工作表的单元格输入=RUN_FORMULA(Sheet1!A1)即可直接执行对应公式文本。
内容的提问来源于stack exchange,提问作者Geo
相关产品推荐
相关产品推荐

