首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google Sheets中的自定义排序顺序

Google Sheets中的自定义排序顺序
EN

Stack Overflow用户
提问于 2018-01-30 04:23:36
回答 1查看 3.7K关注 0票数 2

我正在尝试根据单列中的值和自定义排序顺序对Google Sheets电子表格中的一系列数据进行排序。我可以对数据进行排序,但我不知道如何设置排序的优先级(除了按字母顺序或按字母顺序反转)。我想根据下面指出的顺序进行排序,但显然我现在的排序只是按字母顺序进行的。非常感谢您的帮助!

代码语言:javascript
运行
复制
  function onEdit() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var editedCell = sheet.getActiveCell();

  //sort based on priority
    var columnToSortBy = 4;
    var tableRange = "A2:Q1000";
    var SortOrder = [
      {name: "Urgent", value:1},
      {name: "High Priority", value:2},
      {name: "Moderate Priority", value:3},
      {name: "No deadline", value:4},
      {name: "Complete", value:5}
    ];

    if(editedCell.getColumn() == columnToSortBy){   
      var range = sheet.getRange(tableRange);
      range.sort( { column : columnToSortBy } );  //this needs to be sorted based on priority level, not 
    }
  }
EN

回答 1

Stack Overflow用户

发布于 2018-01-30 08:06:44

GAS文档似乎没有引用自定义排序顺序。您可以从范围中获取值,通过将自定义比较器函数传递给Array.prototype的“sort”方法对它们进行排序,最后使用排序后的数组覆盖范围。

下面的示例假设第一个工作表中有一列需要根据'sortBy‘对象设置的优先级进行排序。

代码语言:javascript
运行
复制
var sheet = SpreadsheetApp.getActive().getSheets()[0];

  var range = sheet.getRange(1, 1, sheet.getLastRow(), 1);
  var values = range.getValues();

  var sortBy = {  
    "a": 2,
    "b": 0,
    "c": 4,
    "d": 1,
    "e": 3 
  };

 values.sort(function(a, b){   
   return sortBy[[a][0]] - sortBy[[b][0]];
  });


 range.setValues(values);

这是升序排序-为了颠倒顺序,更改比较器函数,从下一个元素中减去当前元素的优先级。

代码语言:javascript
运行
复制
 return sortBy[[b][0]] - sortBy[[a][0]];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48509394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档