GASで空白行・空白列・空白セルを削除するには?【コード付き】

2020-03-31

GASで空白行・空白列を自動削除するには?【サンプルコードあり】
mono
mono
こんにちは、monoです。

スプレッドシートにはセルの数に制限があるのをご存知でしょうか?

2021年4月現在、スプレッドシートは1ファイルにつき500万セルまでしか作ることができません(昔は200万セルだった)。

当記事ではスプレッドシートのセルを大事に使いたい人のため、

  • GASで空白行を自動削除する方法
  • GASで空白列を自動削除する方法

について解説します。

GASで空白行を自動削除する方法

まず、GASで空白行を自動削除する方法について解説します。

基本的なアルゴリズム

空白行の自動削除は、以下のようなアルゴリズムで処理します。

  1. 実行するシートを指定する
  2. 最終行の値を取得する
  3. 最終行までのfor文を作る
  4. セル値が空白か判定する
  5. 空白ならその行を削除する
  6. for文のカウントを-1する

※最後にカウント変数を-1するのは、行削除を実行した時点でシートの行の順番が1ずれるためです。

サンプルコード(コピペ推奨)

空白行を自動削除してくれるスクリプトのサンプルコードを載せておきます。

コピペしたらすぐ動くようになっているので、ぜひお試しください。

 command
function removeRows{
 //①実行するシートを指定する
 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = spreadsheet.getSheetByName('<シート名>');
 //②最終行の値を取得する
 var lastRow = sheet.getLastRow();
 //③最終行までのfor文を作る
 for(var i=1; i<=lastRow; i++){
  //④セル値が空白か判定する
  var cell = sheet.getRange(i,1);
  if(cell.isBlank){
   //⑤空白ならその行を削除する
   sheet.deleteRow(i);
  }
  //⑥for文のカウントを-1する
  i++;
}

GASで空白列を自動削除する方法

続いて、GASで空白行を自動削除する方法について解説します。

基本的なアルゴリズム

空白列を自動削除するアルゴリズムですが、基本的には空白行の自動削除とやることは変わりません。

空白列の自動削除は以下のようなアルゴリズムで処理します。

  1. 実行するシートを指定する
  2. 最終列の値を取得する
  3. 最終列までのfor文を作る
  4. セル値が空白か判定する
  5. 空白ならその列を削除する
  6. for文のカウントを-1する

サンプルコード(コピペ推奨)

空白行と同じように、空白列を自動削除してくれるスクリプトのサンプルコードを載せておきます。

こちらもコピペしたらすぐ動くので、ぜひお試しください。

 command
function removeColumns{
 //①実行するシートを指定する
 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = spreadsheet.getSheetByName('<シート名>');
 //②最終列の値を取得する
 var lastColumn = sheet.getLastColumn();
 //③最終列までのfor文を作る
 for(var j=1; j<=lastColumn; j++){
  //④セル値が空白か判定する
  var cell = sheet.getRange(1,j);
  if(cell.isBlank){
   //⑤空白ならその列を削除する
   sheet.deleteColumn(j);
  }
  //⑥for文のカウントを-1する
  j--;
}

おまけ:行と列を同時に削除

最後におまけで、空白の行と列を同時に削除してくれるスクリプトを載せておきます。

使い道がありそうなら、ぜひご使用ください。

 command
function removeColumns{
 //①実行するシートを指定する
 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = spreadsheet.getSheetByName('<シート名>');
 //②最終行と最終列の値を取得する
 var lastRow = sheet.getLastRow();
 var lastColumn = sheet.getLastColumn();
 //③最終行までのfor文を作る
 for(var i=1; i<=lastRow; i++){
  //④セル値が空白か判定する
  var cell = sheet.getRange(i,1);
  if(cell.isBlank){
   //⑤空白ならその列を削除する
   sheet.deleteRow(i);
  }
  //⑥for文のカウントを-1する
  i--;
 }
 //③最終列までのfor文を作る
 for(var j=1; j<=lastColumn; j++){
  //④セル値が空白か判定する
  var cell = sheet.getRange(1,j);
  if(cell.isBlank){
   //⑤空白ならその列を削除する
   sheet.deleteColumn(j);
  }
  //⑥for文のカウントを-1する
  j--;
 }
}

まとめ

今回は「GASで空白行を自動削除する方法」「GASで空白列を自動削除する方法」について解説しました。

余分な空白やデータはそれだけで容量をくってしまうので、極力つくらず、定期的に削除することをおすすめします(余白によって見やすくなる場合は別ですが)。

当記事で紹介したサンプルコードはコピペすればすぐに使えるので、気になった方は無断で使用いただいて大丈夫です。

では、また。

【GAS】Google Apps Scriptをスプレッドシートで使う手順まとめ

続きを読む


【GAS】Google Apps Scriptの勉強におすすめの本3選

続きを読む

  • この記事を書いた人

mono

26歳♂首都圏住みの副業会社員/ギークでズボラないい暮らし/ADHD・HSP傾向/将来はサイドFIREでのんびり暮らしたい/楽天経済圏/リベ大生/インデックス・高配当株投資300万/お仕事の依頼はこちら

スキルを磨く Google Apps Script

© 2021 monoblog