如何将填写完成的排班表全量员工月度数据导出至另一张工作表
Google Sheets排班表数据导出操作指南
方法1:函数动态同步(无需代码,实时更新)
适合需要数据随源排班表自动同步的场景,用QUERY函数实现:
- 新建空白工作表作为导出目标页
- 点击目标页A1单元格,输入对应公式:
- 导出所有非空排班数据(包含全部列):
=QUERY(排班表!A:Z, "SELECT * WHERE A IS NOT NULL", 1) - 仅导出指定月份的排班数据(以2024年5月为例,C列为排班开始日期):
=QUERY(排班表!A:Z, "SELECT * WHERE A IS NOT NULL AND C >= date '2024-05-01' AND C <= date '2024-05-31'", 1) - 仅导出指定字段(如员工姓名、开始日期、结束日期三列,对应A、C、D列):
=QUERY(排班表!A:Z, "SELECT A,C,D WHERE A IS NOT NULL", 1)
- 导出所有非空排班数据(包含全部列):
参数说明:公式中
排班表替换为你的源排班表工作表名称,A:Z替换为源表实际数据范围,末尾的1代表源表包含1行表头,有多行表头就修改为对应数值。
方法2:Apps脚本导出(适合复杂场景,可定时自动运行)
适合需要批量处理、定时同步的场景,操作步骤如下:
- 点击Google Sheets顶部菜单栏「扩展程序」→「Apps脚本」进入脚本编辑器
- 删除默认的空白代码,粘贴以下代码:
function exportScheduleData() { const ss = SpreadsheetApp.getActiveSpreadsheet(); // 替换为你的源排班表名称 const sourceSheet = ss.getSheetByName('排班表'); // 替换为你要导出的目标表名称,不存在会自动新建 const targetSheet = ss.getSheetByName('全量导出数据') || ss.insertSheet('全量导出数据'); // 读取源表全部有效数据 const sourceData = sourceSheet.getDataRange().getValues(); // 清空目标表原有内容后写入新数据 targetSheet.clearContents(); targetSheet.getRange(1, 1, sourceData.length, sourceData[0].length).setValues(sourceData); // 可选:自动适配列宽 targetSheet.autoResizeColumns(1, sourceData[0].length); }
- 点击保存按钮,首次运行需要授权脚本访问你的表格权限,授权完成后点击运行即可完成导出,也可以在脚本编辑器的「触发器」页面设置定时运行规则,实现每日/每周自动同步导出。
注意事项
- 源排班表如果存在合并单元格,需要先取消合并并填充完整所有单元格内容,不然导出会出现空值
- 使用QUERY函数时请确保日期列的单元格格式为「日期」类型,不要设置为纯文本,否则日期筛选规则会失效
- 导出后如果需要固定数值不随源表变动,选中目标表所有数据按
Ctrl+C复制,再右键选择「选择性粘贴」→「仅粘贴值」即可。
内容的提问来源于stack exchange,提问作者Han
相关产品推荐
相关产品推荐

