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

如何使用另一张Google Sheet工作表有条件地修改现有表格的数值

Google Sheet资产ID批量替换实现方案

以下两种方案可满足需求,可根据自己的操作习惯选择:

方案1:无代码公式法(适合单次替换操作)

操作步骤:

  • 先确认两个工作表的实际名称,此处假设表单响应工作表名为表单响应,待修改工作表名为资产表
  • 待修改工作表的G列是「Annotated Asset ID」,在G列旁任意空白列(如H列)的第二行(对应G列首行数据)输入公式:
    =IFERROR(XLOOKUP(G2, '表单响应'!D:D, '表单响应'!E:E, G2))
    若你的表格版本不支持XLOOKUP,可替换为VLOOKUP版本:
    =IFERROR(VLOOKUP(G2, '表单响应'!D:E, 2, FALSE), G2)
  • 公式说明:如果G2的值能匹配到表单响应表D列(Old ID)的内容,就返回对应E列的New ID,匹配不到则保留G2原有值
  • 将H列公式下拉填充到所有数据行,确认替换结果无误后,选中H列所有内容,右键点击「选择性粘贴」-「仅粘贴值」,覆盖到G列后删除辅助列即可

方案2:Google Apps Script法(支持自动更新、无需手动重复操作)

适合需要多次替换、或希望表单提交后自动更新的场景:

  • 打开目标Google Sheet,点击顶部菜单栏「扩展程序」-「Apps 脚本」进入脚本编辑器
  • 清空编辑器内默认的示例代码,粘贴以下代码:
function replaceOldAssetID() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 请将下方两个表名修改为你实际的工作表名称
  const formResponseSheet = ss.getSheetByName("表单响应");
  const targetAssetSheet = ss.getSheetByName("资产表");

  // 读取表单响应表的ID映射关系,跳过表头行
  const formData = formResponseSheet.getDataRange().getValues().slice(1);
  // D列索引为3,E列索引为4,构建ID映射字典
  const idMapping = new Map(formData.map(row => [row[3], row[4]]));

  // 读取待修改表G列的所有资产ID
  const assetIdCol = targetAssetSheet.getRange("G:G").getValues();
  // 遍历替换ID
  const updatedAssetIds = assetIdCol.map(row => {
    const currentId = row[0];
    return [idMapping.has(currentId) ? idMapping.get(currentId) : currentId];
  });

  // 替换结果写回G列
  targetAssetSheet.getRange("G:G").setValues(updatedAssetIds);
  SpreadsheetApp.getUi().alert("资产ID批量替换完成");
}
  • 点击保存按钮自定义项目名称,首次运行需要完成账号授权,授权通过后运行函数即可完成批量替换
  • 如需表单提交后自动触发替换,可在脚本编辑器页面添加触发器,触发事件选择「表单提交时」,触发函数选择replaceOldAssetID即可

参考示例图:
表单响应表:
表单响应表
现有待修改工作表:
现有工作表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:24:04