【问题标题】:Scripting a sorted spreadsheet in Google Docs with ignored rows在 Google Docs 中使用忽略的行编写已排序的电子表格
【发布时间】:2011-12-06 09:00:40
【问题描述】:

我有一个包含两个单独工作表的 Google 电子表格。第一个只是名称和数据的大列表,第二个应该是第一张表上所有数据的排序列表(按姓氏排序)。这是我定义第二张表的当前方式:

=sort(sheet1!A:L, 2, TRUE)

这在大多数情况下都可以正常工作,除了一个问题:在 sheet1 中,第一行是标题行,由“名字”、“姓氏”、“电话”等组成。当我使用该公式时对于 sheet2,该行将与其余行一起排序。

如何更改分配,以便排序忽略 sheet1 的第一行,并以相同的行为对列 A 到 L 进行排序?手动指定长度是不可行的,因为将来可能会快速添加和删除条目。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    您可以使用另一个范围定义,它指定第一个单元格而不是结尾。例如

    A1: =ArrayFormula(Sheet1!A1:L1)
    A2: =Sort(Sheet1!A2:L, 2, TRUE)
    

    A1 公式只是复制标题 :)
    在 A2 中,通过将 2 放置在 A2:L 中来指定只需要数据(第二行和第四行)。

    【讨论】:

      【解决方案2】:

      这是一个通用脚本,它将根据第一列自动排序,并假定一个标题行。

      创建脚本:

      在菜单中,转到工具 -> 脚本编辑器... 在空代码窗口中,粘贴以下代码,每当编辑单元格时,该代码将自动运行:

       /**
       * Automatically sorts the 1st column (not the header row) Ascending.
       */
      function onEdit(event){
        var sheet = event.source.getActiveSheet();
        var editedCell = sheet.getActiveCell();
      
        var columnToSortBy = 1;
        var tableRange = "A2:T99"; // What to sort.
      
        if(editedCell.getColumn() == columnToSortBy){   
          var range = sheet.getRange(tableRange);
          range.sort( { column : columnToSortBy, ascending: true } );
        }
      }
      

      【讨论】:

      • 即使我从 php 脚本添加行?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多