🐼
【GAS】スプレッドシートのセル範囲を並べ替える方法(sortメソッド)/昇順・降順・複数列の優先順
GAS(Google Apps Script)でスプレッドシートのセル範囲を指定して並べ替える方法を紹介します。各列毎に昇順・降順の指定や複数条件(列の優先順)での並び替えも可能です。
sort(sortSpecObj) Class Range | Apps Script | Google for Developers
指定した範囲内のセルを、指定した列および順序で並べ替えます。
手操作で並び替えをする
GASを使わなくても、並び替えは手操作でも可能です。セル範囲を選択して、メニューバーの[データ]→[シートを並び替え] or [範囲を並び替え]の順に操作して簡単に並び替えができます。
GASのsortメソッドで並び替えをする
セル範囲(range)を指定して並び替えができます。{ column: 2, ascending: false }
の形式のオブジェクトで並び替え条件を指定できます。columnは列番号(A列→1、C列→3)で、ascendingがtrueで昇順、falseで降順になります。オブジェクトを配列にして複数列の条件・優先順で並び替えもできます。
function sort1() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheets()[0];
console.log(`シート名: ${sheet.getName()}`);
const range = sheet.getRange("A2:D6");
console.log(`並び替えをする対象のセル範囲: ${range.getA1Notation()}`);
// A列を昇順に並び替える
range.sort(1);
// B列を昇順に並び替える
range.sort(2);
// B列を降順に並び替える
range.sort({ column: 2, ascending: false });
// B列を降順、A列を昇順の優先順で並び替える
range.sort([{ column: 2, ascending: false }, { column: 1, ascending: true }]);
// B列を降順、A列を昇順の優先順で並び替える
range.sort([{ column: 2, ascending: false }, 1]);
// B列、A列を昇順の優先順で並び替える
range.sort([2, 1]);
// B列、A列を昇順の優先順で並び替える
range.sort([{ column: 2, ascending: true }, { column: 1, ascending: true }]);
}
【エラー】Exception: Cell reference out of range
セル範囲外のcolumn(列番号)を指定するとエラーになる。相対的な位置番号ではないので注意する。A列は1、B列は2で固定である。
function sort2() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("シート1");
const numRows = sheet.getLastRow() - 1;
const numColumns = sheet.getLastColumn() - 1;
const range = sheet.getRange(2, 2, numRows, numColumns);
console.log(`並び替えをする対象のセル範囲: ${range.getA1Notation()}`);
//【誤】セル範囲をB列から指定しているので、columnをA列の1を指定すると範囲外のエラーに至る。
range.sort({ column: 1, ascending: false });
//【正】columnをB列の2を指定して、降順で並び替える
range.sort({ column: 2, ascending: false });
}
Discussion