在Google表格中从左到右对列进行排序

C西

我了解如何对Google表格中的行进行排序,但是似乎没有一种内置的方式可以像对Excel那样对列进行排序。仍可以在Google表格中完成吗?我试图避免使用排序和转置,因为它依赖于将数据放在两个位置:原始数据,然后是带有公式的另一个位置。

例如,

   A B C
1  4 3 7

如果我按从大到小的顺序进行排序,那么它将:C列,A列,B列

纳粹

您正在尝试对行进行排序,而电子表格公式无法做到这一点,因为这会导致循环依赖。

我建议改用Apps Script:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastColumn = sheet.getLastColumn();

  // Sort 1st row (B1 - E1)
  var firstValues = sheet.getRange(1, 2, 1, lastColumn - 1).getValues().flat();
  sheet.getRange(1, 2, 1, lastColumn - 1).setValues([sortWithIndices(firstValues)]);

  // Using loop, sort 2nd - 10th row based on the 
  // movement of indices when sorting the 1st row
  var i = 2;  
  var lastRow = 10;
  while(i <= lastRow) {
    var values = sheet.getRange(i, 2, 1, lastColumn - 1).getValues().flat();
    var tempValues = sheet.getRange(i, 2, 1, lastColumn - 1).getValues().flat();
    for (var index = 0; index < values.length; index++) {
      values[index] = tempValues[firstValues.sortIndices[index]];
    }
    sheet.getRange(i, 2, 1, lastColumn - 1).setValues([values]);
    i++;
  }
}

function sortWithIndices(toSort) {
  for (var i = 0; i < toSort.length; i++) {
    toSort[i] = [toSort[i], i];
  }
  toSort.sort(function(left, right) {
    // < means ascending
    // > means descending
    return left[0] < right[0] ? -1 : 1;
  });
  toSort.sortIndices = [];
  for (var j = 0; j < toSort.length; j++) {
    toSort.sortIndices.push(toSort[j][1]);
    toSort[j] = toSort[j][0];
  }
  return toSort;
}

它与仅按行进行排序有很大不同,因为我们现在基于第一行对其他行进行排序。

因此,基本上,我创建了一个函数,该函数在对第一行(firstValues.sortIndices进行排序后保存了索引中的更改这是一个包含对第一行进行排序时的索引更改的数组。

得知之后,将变得更加容易,因为我们仅需要基于交换后续行(2-10)的值firstValues.sortIndices

它发生在for循环内。

样本输出:

样本输出

这是我可以考虑的可能答案之一,实际上是最简单的方法,但适用时间很长。

一个可能的答案是交换整个列,我认为这样做会更好,更快。

参考:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从左到右对列进行排序?

您可以在Google表格中对列进行水平排序吗?

在Google表格中对= QUERY()数据进行排序

在Angular中对表格列进行排序

DataTable通过在列中从左到右读取来对数字进行排序

如何使用Google表格中ArrayFormula生成的值对列进行排序?

如何让 Google 表格根据其中一列中的值自动对行进行排序?

如何在Google表格中对一组4列进行排序

替换列标题并从左到右对其进行排序

在Google表格的边栏中对索引进行排序

如何在Google表格中对行进行排序

如何根据Google表格中的背景颜色对行进行排序

仅在为Google Apps脚本/ Google表格中的特定列设置特定值时,才如何自动连续进行排序?

在Google表格电子表格中按名称对表格进行排序的脚本

无法对表格中的日期列进行排序

在Javascript中对表格的列进行排序无法正常工作

使用Google脚本对Google表格中的数据进行排序(具有自定义排序顺序)

使用 PHP API 在 Google Drive 电子表格中对表格进行排序

在Google表格上对数据进行排序

如何在2列中对唯一对进行计数并在Google表格中使用ArrayFormula使用计数进行排序?

按列值对表格进行排序

MySQL如何从左到右对行进行排序

在Google表格查询中对列进行字符串操作

在XSLT 2.0中对表格进行排序

对表格中的数据进行排序

在MATLAB中对表格的内容进行排序

对表格中的行进行排序

对表格中的数据进行排序

根据选定的值过滤数据,在Google表格中按日期进行排序和计数