我有一个脚本,该脚本在编辑时对B列进行排序,但是有两个问题。
1-将带有值的行发送到工作表的底部。
2-数字无法正确排序。它们应该以1,3、4、5和20的顺序排列,但是在对其进行排序时,它们将其排序为1、20、3、4、5。这就像它只能识别20中的2并将其放置在1.之后
我在各个论坛中进行搜索,试图找出运气,所以将不胜感激。
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("050")
var range = sheet.getRange("A6:L200");
// Sorts by the values in column 2 (B)
range.sort({column: 2, ascending: true});
}
我不知道这是否有所不同,但是正在排序的工作表使用VLOOKUP。 B上的每个列都使用VLOOKUP。
=IFERROR(VLOOKUP(A6,data2019,3,FALSE),"")
答案 0 :(得分:0)
首先,无需首先获取空白值,而可以使用getDataRange()
仅获取需要排序的范围。
一旦定义了范围,就可以对其进行排序。您的值未正确排序(这可能是由于VLOOKUP中单元格的格式所致)。您可以简单地使用setNumberFormat('0')
将数据范围的格式设置为数字格式,然后按期望的顺序对数据进行排序。
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("050");
var range = sheet.getDataRange();
var numRows = range.getNumRows();
//sets the formatting of column B to a number in all populated rows
sheet.getRange(1, 2, numRows).setNumberFormat('0');
//sorts range by column B using newly formatted values
range.sort({column: 2, ascending: true});
}