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

Google Sheets如何按条件跨标签页自动填充指定行数据

解决方案

你可以选两种方式实现,优先推荐Apps Script方案,灵活度更高不会影响部门表的手动编辑操作。

方案1:Google Apps Script 自动触发同步(推荐)

这是最贴合你需求的方案,只有当人员标记为培训完成时才会自动追加数据到对应部门表,部门表内你可以自由加其他备注内容不会被覆盖。
操作步骤:

  1. 打开你的表格,点击顶部菜单栏扩展程序 → Apps Script,打开脚本编辑器
  2. 清空编辑器里默认的所有代码,粘贴下面的代码:
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);
}
  1. 点击编辑器顶部的保存按钮,给项目随便命名(比如「培训记录同步」),第一次编辑主表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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:12:32