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

Google Sheets排序时如何锁定整行,使单元格跟随整行同步移动?

解决方案

问题根源

当前脚本仅选取了状态列(F列)作为操作范围,排序后也仅将排序结果写回F列,因此其他列的内容不会同步移动。

修改后可实现整行同步排序的脚本

SHEET_NAME = "Zars";
// 替换为你的整张待排序表格的完整范围,不要仅选状态列
SORT_DATA_RANGE = "A3:Z100";
// 状态列在上述SORT_DATA_RANGE范围内的索引,从0开始计数
// 例:范围以A列开头时,F列索引为5;范围以B列开头时,F列索引为4
STATUS_COL_INDEX_IN_RANGE = 5;

function onEdit(e){
  multiSortColumns();
}
function multiSortColumns(){
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getSheetByName(SHEET_NAME);
  var range = sheet.getRange(SORT_DATA_RANGE); 
  var values = range.getValues(); 
  // 自定义排序顺序,可按需调整
  var order = ['READY', 'DISPATCHED', 'ENROUTE', 'REST', 'COVERED', 'NO ANSWER', ''];
  values.sort(function (a, b) {
    var statusA = a[STATUS_COL_INDEX_IN_RANGE];
    var statusB = b[STATUS_COL_INDEX_IN_RANGE];
    if (statusA === 'READY' && statusB !== 'READY') { return -1; }
    else if (statusA !== 'READY' && statusB === 'READY') { return 1; }
    else { return order.indexOf(statusA) - order.indexOf(statusB); }
  });
  range.setValues(values);
  ss.toast('Sort complete.');
}

配置调整说明

  • 请将SORT_DATA_RANGE的值替换为你实际的整张待排序表格的范围,覆盖所有需要同步排序的列
  • 请勿将表格表头行放入SORT_DATA_RANGE,避免表头被一同排序
  • 按需调整STATUS_COL_INDEX_IN_RANGE的值,确保对应到状态列在所选范围内的正确索引
  • 状态排序规则可以直接修改order数组的顺序,无需调整其他逻辑

内容的提问来源于stack exchange,提问作者Liliya Kostadinova

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 17:42:00