我正在制作一张google工作表,以组织我校的更衣柜分配系统。对于未分配的储物柜,学生/成绩/专业/等。细胞是空白的。理想情况下,我需要一个功能,它将对储物柜进行排序,将所有未分配的(空白学生单元格)推送到工作表的顶部。但是,无论我是按升序还是降序排序,谷歌api似乎都会忽略任何空白单元格并将它们推到底部。一旦这张纸完成,它将有近1000个储物柜,所以每次教师想要分配一个开放式储物柜时,必须完全向下滚动是非常烦人的。有什么想法吗?
答案 0 :(得分:3)
由于使用表单本机函数似乎很难,我尝试了数组方法,并提出了以下似乎按预期工作的代码:
这些函数可以带一个参数(列号 - 从0开始 - 你想要排序)并在G上设置一个默认值,这样你就可以从没有参数的菜单中调用它。
TEST SHEET HERE (test sorts on column A)
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Sort Sheet",
functionName : "sortSheet"
}];
sheet.addMenu("Sort Sheet", entries);
};
function sortSheet(col){
col = col || 6;// default to col G
Logger.log(col);
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var data = range.getValues();
var headers = data.shift();
data.sort(spaces);
function spaces(x,y){
var a = x[col];// choose the cell in the column
var b = y[col];
var comp = (a==''?"_":a)>(b==''?"_":b)?1:-1;// sort replacing empty with underscore
return comp;
}
data.unshift(headers);// put back headers in place
range.setValues(data);//update sheet
}