Apps Scriptリファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

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から削除した一行分減らしていく





関連記事

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

Latest post

Google Formsで記述式の質問に字数制限を設定したい

記述式の質問には「回答の検証」を設定することができます フォームの編集画面 右下の︙メニューで「回答の検証」を選択します 検証方法には「数値」「テキスト」「長さ」「正規表現」という種類があります 今回は字数制限したいので「長さ」を選びます 長さには「最大文字数」か「最小文字数」を...