当前位置: 首页 > 知识库问答 >
问题:

Google Sheets-在多个工作表的特定范围内自动排序2列

陈知
2023-03-14

我一直在寻找一种在Google工作表上编写自动排序脚本的方法,该脚本可执行以下操作:

  • 仅适用于特定范围(A35:I911),但适用于Google主工作表中的所有工作表

我尝试了以下代码,但无法正常工作:

   function onEdit(event) {
      var postDate = 1;
      var postTime = 2;
    
      var sheet = event.source.getActiveSheet();
      var tableRange = "A35:I911";
      var range = sheet.getRange(tableRange);
    
      range.sort([
        {column: postDate, ascending: true},
        {column: postTime, ascending: true}
      ]);
    }

提前谢谢你!

以下是谷歌表格编辑版本的链接:https://docs.google.com/spreadsheets/d/1NUy6aY-lEA66UFXg4Yx4mXsTgFvj5g2Dhv4jToYsQnw/edit?usp=sharing)

共有1个答案

罗甫
2023-03-14
  • 虽然从你的问题,不幸的是,我不能理解,但它不会正常工作,当我看到你的示例电子表格时,似乎最大的行是910在工作表"2021年3月"。我想这可能是你发行它的原因。
  • 当您想在编辑单元格A35: I911时运行脚本时,在您的情况下,我认为当编辑单元格A35: B911时,运行脚本可能是合适的。因为即使编辑了单元格C35: I911,排序也不会运行。
  • 而且,从您的示例脚本中,我认为您可能不想在编辑工作表概述时运行脚本。

当以上几点反映到您的脚本中时,它会变成如下所示。

function onEdit(event) {
  var range = event.range;
  var sheet = event.source.getActiveSheet();
  if (sheet.getSheetName() == "Overview" || range.rowStart < 35 || range.rowStart >= 911 || range.columnStart > 2) return;
  var postDate = 1;
  var postTime = 2;
  var tableRange = sheet.getMaxRows() < 911 ? "A35:I" + sheet.getLastRow() : "A35:I911";
  var range = sheet.getRange(tableRange);
  range.sort([
    {column: postDate, ascending: true},
    {column: postTime, ascending: true}
  ]);
}
  • 要运行脚本时,请编辑工作表中的单元格“A35:I911”,但“概述”除外
  • 当您要在单元格“A35:I911”运行脚本时,请修改范围。专栏开始
  • 简单触发器
  • getMaxRows()

 类似资料:
  • 我希望表2(标题为“托管交易”)按日期自动排序,表1(标题为“贷款查询”)按姓氏自动排序。两张表都在一张谷歌表中。我已经找到了下面的脚本,我对它进行了轻微的修改,它在第2页上的效果非常好,可以按日期自动排序; 但是,我希望第一张工作表按照第2列中的姓氏自动排序,而不是脚本所指的第7列 值得一提的是,我对脚本做了以下更改,并在下面的脚本中添加了按姓氏排序的脚本,该脚本在第1页的第2列中运行良好; 但

  • 我有多张表格需要排序,它们需要按不同的列排序。这是我当前正在运行的脚本: 我想添加另一个范围排序列,这样它将首先按第10列排序,然后按第17列排序。我似乎不能让它自动排序2列。任何帮助将不胜感激!

  • 问题内容: 我有一个带有id列和成千上万行的表。我获得了1000个ID的列表,用于对照其他表格数据进行检查。 ID没有按顺序存储。 ID列表也不按顺序排列。 当我使用这些ID选择表格数据时,仅返回990个结果,这意味着自该列表产生以来,其中10个结果已更改/被删除。如何从该数据范围中找到10个缺失值?这是我目前正在做的事情: 返回990个结果。我可以做类似的事情吗? 编辑:抱歉造成混乱。我应该提到

  • 我无法降低这个问题的复杂性。请给出一些更好的方法。 有没有一个我不知道的数学公式,或者它可以用更好的方法来完成? 我是这样做的: