セル範囲を操作する

【GAS】スプレッドシートの複数列で重複するデータ行を削除する

GASでスプレッドシートの複数列で重複するデータ行を削除するには「removeDuplicates(columnsToCompare)」を利用する。

removeDuplicates(columnsToCompare)

指定された列の値が前の行と重複している値を含む、この範囲内の行を削除します。値が同じで、大文字と小文字、フォーマット、数式が異なる行は、重複とみなされます。この方法では、フィルタなどにより、非表示になっている行がすべて削除されます。この範囲外にあるコンテンツは削除されません。

https://developers.google.com/apps-script/reference/spreadsheet/range#removeduplicatescolumnstocompare

スプレッドシートの複数列で重複するデータ行を削除するGAS実行の様子

removeDuplicates(columnsToCompare)メソッドを利用して、スプレッドシートの複数列で重複するデータ行を削除するGASを実行してみました。

removeDuplicates(columnsToCompare)
removeDuplicates(columnsToCompare)を実行した様子

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)のパラメーター

名前説明
columnsToCompareInteger[]重複値を分析するための列です。列を指定しない場合、すべての列で重複が分析されます。
removeDuplicates(columnsToCompare)のパラメーター

removeDuplicates(columnsToCompare)の戻り値

Range - 重複を削除した結果の範囲。範囲のサイズは、削除された行ごとに 1 行ずつ縮小されます。

スプレッドシートの複数列で重複するデータ行を削除するまとめ

GAS×スプレッドシートの複数列で重複するデータ行を削除するならremoveDuplicates(columnsToCompare)メソッドを利用しましょう。

関連記事:【GAS】スプレッドシートで指定した行・列のセル範囲を取得する

関連記事:【GAS】スプレッドシートの最終行を取得する

関連記事:【GAS】スプレッドシートの最終列を取得する

関連記事:【GAS】スプレッドシート内で検索を行う

-セル範囲を操作する