如何用单个onEdit()函数实现多工作表按C列触发排序?
解决方案
可以用单个onEdit()函数实现多工作表的触发排序需求,修改后的代码如下:
function onEdit(e) { multiSortColumns(e); } function multiSortColumns(e) { // 定义需要触发排序的工作表名称列表 const targetSheets = ['FASHION NL', 'Sheet2', 'Sheet3']; // 替换为你的目标工作表名 const editedSheet = e.source.getActiveSheet(); // 检查编辑的列是否为C列(第3列)、单元格不为空,且当前工作表在目标列表中 if (e.range.columnStart === 3 && e.range.getValue() !== '' && targetSheets.includes(editedSheet.getName())) { // 定义需要排序的范围(根据你的需求调整) const sortRange = editedSheet.getRange("A5:bY600"); // 按第11列(K列)升序排序 sortRange.sort({column: 11, ascending: true}); e.source.toast('排序完成。'); } }
关键修改说明:
- 目标工作表列表:通过
targetSheets数组指定所有需要触发排序的工作表名称,只需添加或移除名称即可调整范围。 - 动态获取当前工作表:使用
e.source.getActiveSheet()获取触发编辑事件的工作表,避免硬编码单个工作表名。 - 条件判断:新增对当前工作表是否在目标列表中的检查,确保只有指定工作表的C列编辑才会触发排序。
这样你就不需要为每个工作表复制脚本,只需维护一个函数即可实现多工作表的排序触发。
内容的提问来源于stack exchange,提问作者Diego Kersjes
相关产品推荐
相关产品推荐

