LANG SELRCT

コードを書く場所

2019年11月21日木曜日

スプレッドシートの空白行を削除したい(アクティブセル以下の行を対象)


A列に空白の行があって


その空白の行を削除したい


フィルタを作成して削除しても良いけれど、フィルタの場合はB列やC列を値で埋めておかないと作成できない。

マクロを記録してやろうとしたら、空白のセルではなく空白じゃないセルが決め打ちで選択されて、汎用的に使えなそうだったため、以下のようなコードを書きました。

A列でアクティブセル以下の行で空白の行を削除します。



コード.gs
function deleteBlankRows(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var row = sheet.getActiveRange().getRow();
  var lastRow = sheet.getLastRow();
  for(var i = row; i < lastRow; i++){
    var range = sheet.getRange('A' +  i);
    var value = range.getDisplayValue();
    if(value == ""){
      sheet.deleteRows(i, 1);// i行目から1行削除
      lastRow = lastRow - 1
    }
  }
}
意訳
この機能がやること
今開いているシートを取得する
選択している範囲の行数を取得する
シートでデータが入っている最終行を取得する
選択行以下で空白の行を削除していく
A列のi行目の範囲を取得する
その範囲の値を取得する
その値が空なら
i行目の1行を削除する
lastRowから削除した一行分減らしていく





関連記事

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