如何按职位排序Google Sheet「员工工时」工作表数据?
Google Sheet「员工工时」表按职位自动排序解决方案
公式实现方案(无需脚本)
适合保留原数据、通过单独视图查看排序结果的场景:
- 新建一张工作表(例如命名为「排序后工时表」)
- 在新表的A1单元格输入以下公式,自动同步并排序「员工工时」表的数据:
=QUERY('员工工时'!A1:Z, "SELECT * ORDER BY D ASC", 1)- 公式说明:
QUERY函数读取「员工工时」表的全部数据,按D列(职位)升序排序,1表示保留表头行 - 当「员工工时」表的职位(D列)变更时,新表会自动更新排序结果
- 公式说明:
- 若要在原表直接展示排序结果(不推荐,易误改数据),可清空原表A2及以下区域后输入:
=ARRAYFORMULA(SORT('员工工时'!A2:Z, '员工工时'!D2:D, TRUE))
Google Script实现方案(原表实时自动排序)
适合需要在原表直接自动排序的场景,编辑D列职位时触发排序:
- 打开目标表格,点击菜单栏「扩展程序」→「Apps Script」
- 删除默认代码,粘贴以下脚本:
function onEdit(e) { const targetSheet = "员工工时"; const sortCol = 4; // D列对应序号4 const sheet = e.source.getSheetByName(targetSheet); // 仅在编辑目标工作表的D列时执行排序 if (!sheet || e.range.getColumn() !== sortCol) return; // 定义数据范围:跳过表头(第1行),覆盖所有数据行和列 const dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // 按D列升序排序(改为false则降序) dataRange.sort({column: sortCol, ascending: true}); }
- 保存脚本(命名任意,例如「AutoSortPosition」),关闭编辑器
- 测试:修改任意行的D列职位,表格会自动重新排序
内容的提问来源于stack exchange,提问作者Contradictory
相关产品推荐
相关产品推荐

