【发布时间】:2021-08-12 15:17:09
【问题描述】:
我有这个脚本用于自动自定义排序,但是,由于某种原因,它仅在所选范围仅包含我实际要排序的列而不是整个表时才有效。在这种情况下,我想按人们的当前状态(这是一个包含每个人的所有选项的下拉菜单)对他们进行排序 - 当他们“准备好”时,我希望他们出现在顶部,当“DISPATCHED”出现在第二位时,“ENROUTE” - 第三等。 状态列的排序很好,但它本身不会移动行。
有没有办法对一行进行分组和锁定,这样如果该行的一个单元格被重新排序,那么整行都应该重新排序?这是我目前使用的脚本:
SHEET_NAME = "Zars";
SORT_DATA_RANGE = "F3:F100";
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', '']; //CUSTOM ORDER LIST
values.sort(function (a, b) {
if (a[0] === 'READY' && b[0] !== 'READY') { return -1; }
else if (a[0] !== 'READY' && b[0] === 'READY') { return 1; }
else { return order.indexOf(a[0]) - order.indexOf(b[0]); }
});
range.setValues(values);
ss.toast('Sort complete.');
}
非常感谢所有帮助!非常感谢
【问题讨论】:
-
我不确定我是否理解,你能分享一个样本表来显示当前的行为和你想要的行为吗?
标签: sorting google-sheets google-sheets-formula