查询和转置 Google Sheets 数据

问题描述 投票:0回答:1

电子表格目前采用 Google 表格格式。

  1. 我正在尝试将数据从sheet1表中提取到sheet2...在第二张图片中按如下方式转置。
  • 原始数据会增长...每个周期一个新行
  • 因此查询输出需要增长...每个周期一个新列

我无法实现这一点并使事情保持动态。

google-sheets google-apps-script
1个回答
0
投票

您可以使用以下脚本作为您的脚本的基础:

function segregateData() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Input");
  var shOut = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Output");
  var dataCol1 = sh.getRange(1, 5, 1, 5).getValues();
  var dataColTrans = dataCol1.map((x) => x.map(y => [y])).flat(Infinity);
  dataColTrans.unshift("Items");
  var data = sh.getRange(2, 3, sh.getLastRow() - 1, sh.getLastColumn() - 2).getValues();
  var data1 = data.map((x) => x.length >= 2 ? [x[0] + " (" + x[1] + ")"].concat(x.slice(2)) : x);
  var data2 = data1[0].map((x, i) => data1.map(y => y[i]));
  var dataOut = []
  for (var i = 0; i < data2[0].length; i++) {
    for (var j = 0; j < data2.length; j++) {
      dataOut.push([dataColTrans[j], data2[j][i]])
    }
    j = 0;
    dataOut.push(["", ""]); //spacing
    dataOut.push(["", ""]); //spacing
  }
  shOut.getRange(1, 1, dataOut.length, dataOut[0].length).setValues(dataOut);
}

测试设置:

此脚本在以下设置下有效:

  1. Google 表格有两个工作表(输入和输出)

  1. 输入如下所示:

您可以编辑该行:

shOut.getRange(1, 1, dataOut.length, dataOut[0].length).setValues(dataOut);

调整输出的位置。

输出

预期输出应如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.