Google Sheets如何按条件跨标签页自动填充指定行数据
解决方案
你可以选两种方式实现,优先推荐Apps Script方案,灵活度更高不会影响部门表的手动编辑操作。
方案1:Google Apps Script 自动触发同步(推荐)
这是最贴合你需求的方案,只有当人员标记为培训完成时才会自动追加数据到对应部门表,部门表内你可以自由加其他备注内容不会被覆盖。
操作步骤:
- 打开你的表格,点击顶部菜单栏
扩展程序→Apps Script,打开脚本编辑器 - 清空编辑器里默认的所有代码,粘贴下面的代码:
function onEdit(e) { if (!e || !e.range) return; const mainSheet = e.range.getSheet(); // 只处理主表「completed training」的编辑 if (mainSheet.getName() !== "completed training") return; const editRow = e.range.getRow(); const editCol = e.range.getColumn(); const lastCol = mainSheet.getLastColumn(); const headers = mainSheet.getRange(1, 1, 1, lastCol).getValues()[0]; // 定位表头对应列,以下字段名请和你表格实际表头完全一致 const completedCol = headers.findIndex(h => h.trim() === "Completed?") + 1; const deptCol = headers.findIndex(h => h.trim() === "Department") + 1; const uniqueKeyCol = headers.findIndex(h => h.trim() === "Employee ID") + 1; // 用工号做唯一标识防重复,没有工号可以换成姓名列 // 跳过表头行,只处理Completed列的编辑 if (editRow === 1 || editCol !== completedCol) return; const isCompleted = e.value?.trim().toLowerCase() === "yes"; if (!isCompleted) return; // 读取当前行完整数据 const rowData = mainSheet.getRange(editRow, 1, 1, lastCol).getValues()[0]; const targetDept = rowData[deptCol - 1].trim(); const targetSheet = e.source.getSheetByName(targetDept); // 找不到对应部门表就直接退出 if (!targetSheet) return; // 防重复判断:如果目标表已经存在该员工记录就不重复追加 const existingRecords = targetSheet.getDataRange().getValues(); const alreadySynced = existingRecords.some(row => row[uniqueKeyCol - 1] === rowData[uniqueKeyCol - 1]); if (alreadySynced) return; // 追加数据到对应部门表 targetSheet.appendRow(rowData); }
- 点击编辑器顶部的保存按钮,给项目随便命名(比如「培训记录同步」),第一次编辑主表
Completed?列触发脚本时,按弹窗提示完成谷歌账号授权即可正常使用。
注意:代码里标注需要匹配表头的三个字段(Completed?/Department/Employee ID),请替换成你自己表格里实际的表头文字,否则脚本找不到对应列会失效。
方案2:FILTER函数自动同步(零代码)
如果你不想写脚本,可以在每个部门标签页的A1单元格输入过滤公式,自动拉取主表中对应部门、且已完成培训的人员数据。
以CS部门标签页为例,在CS表A1单元格输入:
=FILTER('completed training'!A:Z, 'completed training'!C:C="yes", 'completed training'!D:D="CS")
参数说明:
A:Z替换成你主表实际用到的数据列范围C:C替换成你主表中Completed?列对应的列标D:D替换成你主表中部门列对应的列标"CS"替换成当前标签页对应的部门名称
这个方案的缺点是部门表内公式覆盖的区域不能手动输入其他内容,否则公式会报错,主表调整列顺序后也需要同步修改公式。
内容的提问来源于stack exchange,提问作者dampfy
相关产品推荐
相关产品推荐

