首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google“transpose”(排序(转置) -as脚本)

Google“transpose”(排序(转置) -as脚本)
EN

Stack Overflow用户
提问于 2020-12-08 15:09:19
回答 1查看 835关注 0票数 0

是否有一个Google Sheet脚本能够转换我的数据,然后对其进行排序,然后再转接回来。我需要在下面做这个公式--但是作为一个脚本。

=转置(排序(转置(J1:N4),1,))

我的意图是能够排序我的标题列A->Z,以便我可以有一个一致的位置头列,每次我把它们放进去。例如,有时数据以A:G列的形式出现,但下一次,以前是A:G的标题现在是AGBFCDE (加扰)。排序整个列向下是相当严格的向前,但我需要排序A1:G1,同时保持数据低于它仍然与适当的列标题相关联。例如,它将是“移动整个列左或右”,直到列标题排序A->Z。我希望这种方法的转换-排序-转回将发挥作用,但其他建议将是受欢迎的。

代码语言:javascript
复制
column 1   column4  column5  column 2   column 3
data 1     data 4   data 5   data 2     data 3
data 1     data 4   data 5   data 2     data 3
data 1     data 4   data 5   data 2     data 3

因此,正如您在上面看到的,列标题是不整齐的。每次我把它们放进去时,它们都不会,但我想知道是否最好有一个脚本或某种方式来排序第1栏:第5栏,即使它们永远不会按这种方式粘贴。如果有一个更好的方法,除了转置/排序,那么我将开放任何方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-08 17:08:41

在这里,我创建了一个脚本,它具有相同的转置->排序->转置的概念。

代码语言:javascript
复制
function myFunction() {

  // get all the data in the sheet
  var ss  = SpreadsheetApp.getActiveSheet();
  var range = ss.getDataRange();
  var values = range.getValues();
  
  //convert rows into columns
  var data = transpose(values);

  //sort data
  data.sort(
  function(a,b) {
   return b[0]-a[0] || a[0].localeCompare(b[0]);
  });

  //convert columns into rows
  var data1 = transpose(data);

  //write data back to spreadsheet
  ss.getRange(1,1,values.length,values[0].length)
    .setValues(data1);
}

function transpose(matrix) {
  return matrix[0].map((col, i) => matrix.map(row => row[i]));
}

示例

先于

参考文献

JavaScript中二维阵列的转置

JavaScript排序阵列

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65201485

复制
相关文章

相似问题

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