LANG SELRCT

Google Apps Scriptのコードを書く場所  (新規作成: スプレッドシート | スクリプトエディタ

2018年3月29日木曜日

特定の列に特定の値が入っている行を削除する


スプレッドシートで特定の列に特定の値が入っている行を削除したくて書いたコードです


例として

  • 2行目から下に見ていき
  • B列に "重複" という値が入っている場合
  • その列を削除する


以下に例示したコードは筆者の環境で実行した時に書いたものなので、あくまで参考程度のものとしてみてください
行が誤って削除された場合も変更履歴から復元できるケースもありますが、削除する場合は充分テストをしてから実行することをオススメします



コード.gs
function delete_duplication(){
    var sh = SpreadsheetApp.openByUrl(SS_URL).getSheets()[0];
    var last_row = sh.getLastRow();
    for(var i = 2; i < last_row; i++){
      var range = sh.getRange("B"+ i);
      var value = range.getDisplayValue();
      if(value == "重複"){
        var start_row = i;
        var num_row = 1;
        sh.deleteRows(start_row, num_row);
        i = i - 1;
      }
    }
}
意訳
この機能がやること
シートを取得して(例では開いているシートの先頭にあるシート)
データが入っている最終行を取得して
2行目から最終行まで以下を繰り返す
B列を見て
表示されている値を取得して
"重複"なら
その行から
1行分を指定して
行を削除する
i の値を元に戻す("重複"の行が連続する場合、削除後に1行分上にずれるため、同じ行を見に行かないとズレた行が"重複"の場合にその行を削除できない)





関連記事

シートの行を削除する
シートの列内の重複データを見つける関数


最新の投稿

現在日時から四半期の開始日と終了日を知りたい

今の日時を取得して、現在の四半期の開始日と終了日を知りたくて書いたコードです。 コード.gs function myFunction() { const month = new Date().getMonth() + 1;// monthは0始まりなので+1 ...