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

如何从另一工作表导入公式并实现同步更新?

跨工作表同步公式并保留本地单元格值

方法:使用Google Apps Script + 事件触发器

内置函数(如ARRAYFORMULA、IMPORTRANGE)仅能同步单元格值,无法直接同步公式本身。要实现Sheet1公式修改时Sheet2自动同步对应单元格公式,同时保留Sheet2的A3本地值,需通过脚本实现:

步骤1:编写同步脚本

  1. 打开目标表格,点击顶部菜单栏 工具 > 脚本编辑器
  2. 删除默认代码,粘贴以下内容:
// 同步指定单元格公式
function syncFormulas() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet1 = ss.getSheetByName("Sheet 1");
  const sheet2 = ss.getSheetByName("Sheet 2");
  
  // 定义需要同步的单元格范围
  const targetCells = ["A1", "A2", "B1", "B2"];
  
  targetCells.forEach(cell => {
    const sourceFormula = sheet1.getRange(cell).getFormula();
    sheet2.getRange(cell).setFormula(sourceFormula);
  });
}

// 创建 onChange 触发器(首次运行一次即可)
function setupTrigger() {
  ScriptApp.newTrigger("syncFormulas")
    .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
    .onChange()
    .create();
}

步骤2:创建触发规则

  1. 在脚本编辑器顶部点击 运行,选择setupTrigger执行
  2. 按照提示完成权限授权,授权后触发器自动生效

步骤3:验证效果

  • 修改Sheet1中A1、A2、B1、B2的公式,Sheet2对应单元格会自动同步新公式
  • Sheet2的A3值(4)将保持本地设置,不受同步操作影响

优化触发精度(可选)

如果希望仅在Sheet1的目标单元格被修改时才触发同步,替换为以下onEdit脚本(无需手动创建触发器):

function onEdit(e) {
  const editedSheet = e.source.getActiveSheet();
  const editedCell = e.range.getA1Notation();
  const targetCells = ["A1", "A2", "B1", "B2"];
  
  // 仅监听Sheet1的目标单元格编辑事件
  if (editedSheet.getName() === "Sheet 1" && targetCells.includes(editedCell)) {
    const sheet2 = e.source.getSheetByName("Sheet 2");
    const sourceFormula = editedSheet.getRange(editedCell).getFormula();
    sheet2.getRange(editedCell).setFormula(sourceFormula);
  }
}

注:onEdit仅响应手动编辑操作,无法触发公式自动计算导致的单元格变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:40:29