複数シートがあることを前提に、「シート1」を対象としています。
時間が編集されたら反応するonEdit(e)を作って、ソートさせればよいと思います。
以下、あまり深く考えていませんが試してみて下さい。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
function onEdit(e) {
if (ss.getSheetName() == "シート1") {
var row = e.range.getRow();
var col = e.range.getColumn();
// 月曜日
if ((row > 4) && (row <=20) && (col == 1)) {
var ary = sh.getRange(5,1,16,4).getValues();
var sort_ary = xsort(ary,0,1);
sh.getRange(5,1,16,4).setValues(sort_ary);
// 火曜日
} else if ((row > 4) && (row <=20) && (col == 5)) {
var ary = sh.getRange(5,5,16,4).getValues();
var sort_ary = xsort(ary,0,1);
sh.getRange(5,5,16,4).setValues(sort_ary);
// 水曜日
} else if ((row > 4) && (row <=20) && (col == 9)) {
var ary = sh.getRange(5,9,16,4).getValues();
var sort_ary = xsort(ary,0,1);
sh.getRange(5,9,16,4).setValues(sort_ary);
// 木曜日
} else if ((row > 4) && (row <=20) && (col == 13)) {
var ary = sh.getRange(5,5,16,4).getValues();
var sort_ary = xsort(ary,0,1);
sh.getRange(5,13,16,4).setValues(sort_ary);
// 金曜日
} else if ((row > 24) && (row <=40) && (col == 1)) {
var ary = sh.getRange(25,1,16,4).getValues();
var sort_ary = xsort(ary,0,1);
sh.getRange(25,1,16,4).setValues(sort_ary);
// 土曜日
} else if ((row > 24) && (row <=40) && (col == 5)) {
var ary = sh.getRange(25,5,16,4).getValues();
var sort_ary = xsort(ary,0,1);
sh.getRange(25,5,16,4).setValues(sort_ary);
// 日曜日
} else if ((row > 24) && (row <=40) && (col == 9)) {
var ary = sh.getRange(25,9,16,4).getValues();
var sort_ary = xsort(ary,0,1);
sh.getRange(25,9,16,4).setValues(sort_ary);
}
}
}
function xsort(arrs, col, order){
//二次元配列のソート
//col:並べ替えの対象となる列
//order:1=昇順、-1=降順
arrs.sort(function(a,b){
return (a[col]-b[col])*order;
});
return arrs;
}
ソートの部分は
http://stabucky.com/wp/archives/227
を参考にしています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/23 03:02
2016/12/23 08:50 編集