Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 对分组的行范围进行排序-谷歌工作表_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 对分组的行范围进行排序-谷歌工作表

Google apps script 对分组的行范围进行排序-谷歌工作表,google-apps-script,google-sheets,Google Apps Script,Google Sheets,示例表: 我有一个相当小的数据集,我经常进行排序,为了避免每次手动排序,我在应用程序脚本中创建了一个基本的排序,它可以正常工作,但还远远不够理想。我希望有一个更直接的排序方法,而不需要谷歌公式的任何输入 数据如(左)所示,一旦排序为(右): 到目前为止,我使用的应用程序脚本如下所示: function sortSheet() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName

示例表:

我有一个相当小的数据集,我经常进行排序,为了避免每次手动排序,我在应用程序脚本中创建了一个基本的排序,它可以正常工作,但还远远不够理想。我希望有一个更直接的排序方法,而不需要谷歌公式的任何输入

数据如(左)所示,一旦排序为(右):

到目前为止,我使用的应用程序脚本如下所示:

function sortSheet() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  var data = ss.getSheetByName('Data');

  var lA = data.getRange('B2').getValue(); //Retuns the row for the first occurance of this value. Via.(=MATCH($A2,'Sheet1'!$A:$A,0)) Where Match(Value,Range to check) on the 'data' sheet.
  var nA = data.getRange('C2').getValue(); //Returns the total number of these values. Via. (=COUNTIF('Sheet1'!$A:$A,$A2)) Where CountIF(Range to check,Value) on the 'data' sheet.
  var sortA = sheet.getRange('A'+lA+':Y'+(lA+nA)); //Selects the range that contains the values to be sorted. Via. A through Y within the specified rows.
  sortA.sort({column: 2, ascending: true}) //Sorts range by column 2.

  var lB = data.getRange('B3').getValue();
  var nB = data.getRange('C3').getValue();
  var sortB = sheet.getRange('A'+lB+':Y'+(lB+nB));
  sortB.sort({column: 2, ascending: true})

  var lC = data.getRange('B4').getValue();
  var nC = data.getRange('C4').getValue();
  var sortC = sheet.getRange('A'+lC+':Y'+(lC+nC));
  sortC.sort({column: 2, ascending: true})

}
此脚本依赖于工作表“数据”中给出的信息。 在该表中,第一行的给定键位于B列,该键的计数位于C列

然后,脚本获取所需的范围进行排序,并一次一个地运行它们。
是否有人能够帮助简化此操作或以更简单的方式进行此操作?

您可以尝试在表格中收集每个ID的数据

您的工作表类似于
sheets=[“Sheet1”、“ID A”、“ID B”、“ID C”…]

然后:

  • 通过应用
    sort
    设置要升序排序的ID表
  • Sheet1
    中选择单元格,使其指向每个ID页
  • 从您的评论中,您可以对工作表进行一些手动输入。 因此,也许您可以尝试使用谷歌表单进行手动输入,并在对工作表进行更改时使用构建工作表1

    此外,该方法可能对您有用


    通读SpreadsheetApp服务的类,有一些方法(如and或)可能会有所帮助。

    您可以使用常规公式来实现这一点,而无需使用应用程序脚本:

    =查询(A:B,“按A,B的顺序选择A,B,其中A不为空,B不为空”,1)

    结果是:

    你可以看到它在工作


    注意:这不会在每个ID“部分”之间保留空格。

    谢谢您的评论。我知道你是从哪里来的,但是这不是我想要的。ID的数量通常是固定的,但是ID的数量通常在增加。此范围内的一些数据是手动输入的,而其他数据是通过唯一代码从C列导入的。因此,由于数据量不断增加,将Sheet1点指向每个点将不起作用。