GASでスプレッドシートの複数列で重複するデータ行を削除するには「removeDuplicates(columnsToCompare)
」を利用する。
removeDuplicates(columnsToCompare)
指定された列の値が前の行と重複している値を含む、この範囲内の行を削除します。値が同じで、大文字と小文字、フォーマット、数式が異なる行は、重複とみなされます。この方法では、フィルタなどにより、非表示になっている行がすべて削除されます。この範囲外にあるコンテンツは削除されません。
https://developers.google.com/apps-script/reference/spreadsheet/range#removeduplicatescolumnstocompare
スプレッドシートの複数列で重複するデータ行を削除するGAS実行の様子
removeDuplicates(columnsToCompare)メソッドを利用して、スプレッドシートの複数列で重複するデータ行を削除するGASを実行してみました。
removeDuplicates([])の[]の中で、[2,3]と指定することで
- 2列目の重複データ行を削除
- 3列目の重複データ行を削除
といった結果を表示することができました。
removeDuplicates()
スプレッドシートの重複データ行を削除するは、以下記事を御覧ください。
参照記事:【GAS】スプレッドシートの重複データ行を削除する
スプレッドシートの複数列で重複するデータ行を削除するGAS
function removeDuplicates_1(){
//SpreadsheetAppを起動
let ss = SpreadsheetApp.getActiveSpreadsheet();
//0番目のシートを選択
let sht = ss.getSheets()[0];
//重複テキストを作成
for(let i=1;i<=11;i++){
let midashi =[
["No","項目","備考"]
];
let text = [
["No"+i,"Spreadsheet","Blue"]
]
sht.getRange(1,1,1,3).setValues(midashi);
sht.getRange(i,1,1,3).setValues(text);
sht.getRange(5,2).setValue("OYAKUN");//一部重複でない値に
sht.getRange(7,3).setValue("OYAKUN");//一部重複でない値に
}
//YESNOを確認
const yesno = Browser.msgBox("行の重複を削除しますか?",Browser.Buttons.YES_NO_CANCEL);
//YESなら
if(yesno == "yes"){
let lastrw = sht.getLastRow();
let lastcl = sht.getLastColumn();
let actrng = sht.getRange(1,1,lastrw,lastcl).activate();
//■removeDuplicatesで2~3列目の重複行を削除
actrng.removeDuplicates([2,3]);
}else{
Browser.msgBox("重複行の削除をしませんでした");
}
}
removeDuplicates(columnsToCompare)のパラメーター
名前 | 型 | 説明 |
---|---|---|
columnsToCompare | Integer[] | 重複値を分析するための列です。列を指定しない場合、すべての列で重複が分析されます。 |
removeDuplicates(columnsToCompare)の戻り値
Range - 重複を削除した結果の範囲。範囲のサイズは、削除された行ごとに 1 行ずつ縮小されます。
スプレッドシートの複数列で重複するデータ行を削除するまとめ
GAS×スプレッドシートの複数列で重複するデータ行を削除するならremoveDuplicates(columnsToCompare)
メソッドを利用しましょう。
関連記事:【GAS】スプレッドシートで指定した行・列のセル範囲を取得する
関連記事:【GAS】スプレッドシート内で検索を行う