如何在两个Google Sheets之间实现跨表指定数据的复制同步
实现两个Google Sheets跨表同步M/P列任务数据的操作方案
前置准备
- 确认你同时拥有两个表格的「编辑」权限,且表格1所有人员子工作表都向你开放了编辑权限
- 记录表格2的ID:打开表格2,浏览器地址栏中
d/和/edit之间的字符串即为表格ID,提前留存备用 - 确认表格2的汇总规则:提前明确表格2中人员姓名列、M类任务汇总列、P类任务汇总列的对应位置,优先用姓名匹配汇总数据,避免行号变动导致数据错误
方案1:内置函数自动同步(无需代码,优先选择)
操作步骤
- 打开表格1中对应人员的子工作表,点击M列第一个需要填入汇总数据的单元格
- 输入通用匹配公式,按需替换参数即可:
=IFERROR(VLOOKUP("对应人员姓名", IMPORTRANGE("你记录的表格2ID", "表格2汇总工作表名!A:C"), 2, FALSE), "")
公式说明:
IMPORTRANGE负责拉取表格2的全量汇总数据,VLOOKUP精准匹配对应人员的M类任务汇总值;第二个参数的数字2对应你要取的列序号,拉取P类数据时直接修改为P列的对应序号即可
- 首次输入公式会弹出授权提示,点击「允许访问」,等待1-3秒即可自动同步数据
- P列重复上述操作,修改返回列序号即可
- 其余9人的子工作表按相同逻辑操作,仅需替换公式中的人员姓名参数
注意事项
- 如果表格2中每个人的汇总行是固定行号,可以简化公式为
=IMPORTRANGE("表格2ID", "汇总表!B2")直接引用固定单元格,同步效率更高 - 函数默认同步延迟为1-5分钟,对实时性要求高可以选择方案2
方案2:Apps Script自定义同步(支持手动/定时触发)
操作步骤
- 打开表格1,点击顶部菜单栏「扩展程序」-「Apps Script」,进入脚本编辑器
- 删除默认的
myFunction代码,粘贴以下代码,按注释修改对应参数:
function syncMPTasks() { // 替换为你的表格2ID const sourceSheetId = "替换为你记录的表格2ID"; // 替换为表格2的汇总工作表名称 const sourceSheet = SpreadsheetApp.openById(sourceSheetId).getSheetByName("汇总表"); // 人员映射:key为表格2中的人员姓名,value为表格1中对应子工作表名称,补全10人信息即可 const personSheetMap = { "张三": "张三的日程表", "李四": "李四的日程表", // 按格式补充剩余人员信息 }; // 遍历同步所有人员数据 Object.keys(personSheetMap).forEach(person => { // 此处默认表格2A列为姓名、B列为M类汇总、C列为P类汇总,可按需修改列序号(从0开始计数) const sourceData = sourceSheet.getDataRange().getValues(); const targetRow = sourceData.find(row => row[0] === person); if (!targetRow) return; const mData = targetRow[1]; const pData = targetRow[2]; // 此处默认表格1子表M列为第13列、P列为第16列,写入第2行,可按需修改行、列序号 const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(personSheetMap[person]); targetSheet.getRange(2, 13).setValue(mData); targetSheet.getRange(2, 16).setValue(pData); }) }
- 点击顶部「运行」按钮,首次运行按提示完成授权即可触发同步
- 需要定时同步的话,点击左侧「触发器」按钮,新建触发器,选择
syncMPTasks函数,可自定义触发频率为每小时/每天固定时段触发
可选规则配置
你可以在表格1的M、P列添加数据校验,限制每人最多承接3项任务:选中对应列,点击「数据」-「数据验证」,规则选择「自定义公式」,输入=COUNTA(M:M)<=3(P列修改为对应列号),提示文本设置为「该类任务最多承接3项」即可。
内容的提问来源于stack exchange,提问作者massimo vigano
相关产品推荐
相关产品推荐

