是否有一个Google Sheet脚本能够转换我的数据,然后对其进行排序,然后再转接回来。我需要在下面做这个公式--但是作为一个脚本。
=转置(排序(转置(J1:N4),1,))
我的意图是能够排序我的标题列A->Z,以便我可以有一个一致的位置头列,每次我把它们放进去。例如,有时数据以A:G列的形式出现,但下一次,以前是A:G的标题现在是AGBFCDE (加扰)。排序整个列向下是相当严格的向前,但我需要排序A1:G1,同时保持数据低于它仍然与适当的列标题相关联。例如,它将是“移动整个列左或右”,直到列标题排序A->Z。我希望这种方法的转换-排序-转回将发挥作用,但其他建议将是受欢迎的。
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栏,即使它们永远不会按这种方式粘贴。如果有一个更好的方法,除了转置/排序,那么我将开放任何方法。
发布于 2020-12-08 17:08:41
在这里,我创建了一个脚本,它具有相同的转置->排序->转置的概念。
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]));
}示例
先于

后

参考文献
https://stackoverflow.com/questions/65201485
复制相似问题