我有一個包含多個列的電子表格,需要單獨進行排序。 我寫了下面的腳本,但有點慢,因爲它依次處理每列,並且依次使用getValues()
和setValues()
。 我想找到一種方法來完成數組級別的整個排序以提高效率,但我不知道如何...有什麼建議?在數組級別獨立排序列
這是我現在使用的代碼的相關部分:
...
sh3.getRange(1,1,1,newData[0].length).setFontWeight('bold');// newData is an array corresponding to the whole sheet
for(col=1;col<newData[0].length;++col){
var val = sh3.getRange(2,col,getLastRowInCol(col),1).getValues().sort();// each column have a different height
sh3.getRange(2,col,getLastRowInCol(col),1).setValues(val)
}
}
function getLastRowInCol(col){
var values = sh3.getRange(2,col,sh3.getLastRow(),1).getValues();// skip header and find last non empty row in column
for(n=0;n<values.length;++n){
if(values[n]==''){break}
}
return n
}
注:我知道有一個Library by Romain Vialard,沒有工作(分揀二維數組列),但我interrested關於如何爲個人JS技能提高'手動';-)並且我需要獨立地對每個列進行排序,而不需要爲每個列更新工作表。
回覆:功能getLastRowInCol(COL) - 將返回之前一個空白單元格的第一個單元格。如果列表中有空白,它將不會繼續。最好從底部開始,按照自己的方式尋找具有數據的第一個單元。 – ScampMichael
*將返回空白單元格之前的第一個單元格*我知道,但是自從我開始第2行以來,這很好;-)以及您從最後開始的權利,但是我有更多'短列'長一個'。 –