GASでスプレッドシートの空白行(列)を一括削除:マクロでショートカット実行も可能

スプレッドシートでデータを管理していると、不要な空白行や空白列 が増えてしまうことありませんか?

空白行の削除方法には、フィルター機能を使って空白セルを抽出して削除する方法や、QUERY関数 を使って空白行を除外する方法などがあります。

ですが、シートが複数ある場合や定期的に処理を行いたい場合 には、Google Apps Script を使うとより効率的です。

そこで、Google Apps Script(GAS)を使った空白行・空白列の削除方法 をご紹介します。

GASを活用すれば、空白行の削除を繰り返す場合もカンタンにできるため、作業効率が向上します。

目次

完成イメージ

スクリプト実行前(空白行・列がある状態)

スクリプト実行後

選択したシートの空白行(列)をスクリプトで一括削除

手順

STEP
Googleスプレッドシートを開く

スプレッドシートを開き、空白行(列)を削除したいシートを選択します。

STEP
GASエディタを開く

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

STEP
スクリプトの作成

function myFunction(){

}

が最初から入っているため、消去して以下のスクリプトを貼り付けます。

空白行を削除するスクリプト

function removeEmptyRowsEfficiently() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastRow = sheet.getLastRow();
  
  // 後ろから前に向かって削除する(インデックスのズレを防ぐ)
  for (var i = lastRow; i > 0; i--) {
    var rowData = sheet.getRange(i, 1, 1, sheet.getLastColumn()).getValues()[0];
    if (rowData.every(cell => cell.toString().trim() === "")) {
      sheet.deleteRow(i);
    }
  }
}
スクリプトの説明
現在操作しているシートを指定
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  • 今開いているスプレッドシートの中で、現在操作しているシートを指定する処理を行います。
  • スクリプトを実行すると、そのシートに対して変更が適用されます。
最終行の取得
var lastRow = sheet.getLastRow();
  • データが入っている最後の行番号 を取得します。
後ろから順に空白行を削除
for (var i = lastRow; i > 0; i--) {
  • 後ろから削除することで、削除時の行番号のズレを防ぎます。
行のデータを取得
var rowData = sheet.getRange(i, 1, 1, sheet.getLastColumn()).getValues()[0];
  • getRange(i, 1, 1, sheet.getLastColumn()) で、指定した行のすべての列のデータ を取得します。
行がすべて空白かチェック
if (rowData.every(cell => cell.toString().trim() === "")) {
  • every() を使い、すべてのセルが空白であるかどうか をチェックします。
空白行を削除
sheet.deleteRow(i);
  • 空白行が見つかった場合、その行を削除します。

空白列を削除するスクリプト

function removeEmptyColumnsEfficiently() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastColumn = sheet.getLastColumn();
  
  // 後ろから前に向かって削除する(インデックスのズレを防ぐ)
  for (var i = lastColumn; i > 0; i--) {
    var colData = sheet.getRange(1, i, sheet.getLastRow(), 1).getValues();
    if (colData.every(row => row[0].toString().trim() === "")) {
      sheet.deleteColumn(i);
    }
  }
}
スクリプトの説明
現在操作しているシートを指定
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  • 今開いているスプレッドシートの中で、現在操作しているシートを指定する処理を行います。
  • スクリプトを実行すると、そのシートに対して変更が適用されます。
最終列の取得
var lastColumn = sheet.getLastColumn();
  • データが入っている最後の列番号 を取得します。
後ろから順に空白列を削除
for (var i = lastColumn; i > 0; i--) {
  • 後ろから削除することで、列番号のズレを防ぎます。
列のデータを取得
var colData = sheet.getRange(1, i, sheet.getLastRow(), 1).getValues();
  • getRange(1, i, sheet.getLastRow(), 1) で、指定した列のすべての行のデータ を取得します。
列がすべて空白かチェック
if (colData.every(row => row[0].toString().trim() === "")) {
  • every() を使い、すべてのセルが空白であるかどうか をチェックします。
空白列を削除
sheet.deleteColumn(i);
  • 空白列が見つかった場合、その列を削除します。
(参考)空白行・空白列をまとめて削除するスクリプト
function removeEmptyRowsAndColumns() {
  removeEmptyRowsEfficiently();
  removeEmptyColumnsEfficiently();
}

このスクリプトを実行すると、空白行と空白列を削除の両方をまとめて実行 できます。

STEP
スクリプトを保存

スクリプトを書いたら、名前を付けて保存します。

(例:「空白行の削除」)

STEP
スクリプトを実行

スクリプトを実行して空白行(列)の削除をします。

初めてそのスクリプトを実行する場合は権限の確認が必要です。

そのため、『権限を確認』を押します。

許可の詳細手順

「詳細」をクリックします。

無題のプロジェクト(安全ではないページ)に移動」をクリックします。

許可」をクリックします。

STEP
空白行(列)の削除完了

不要な空白行が削除され、データを整理できます。

マクロ登録で簡単実行(ショートカットキー設定可)

毎回Apps Scriptを開いて実行するのは面倒な時は、マクロインポートを使うことでカンタンに実行できます。

STEP
マクロのインポート

スプレッドシートで「拡張機能」>「マクロ」>「マクロをインポート」を選択します。

「removeEmptyRowsEfficiently」(行削除)、「removeEmptyColumnsEfficiently」(列削除)をリストから選び、「関数を追加」をクリックします。

選択した関数がマクロとしてメニューに追加されます。

STEP
マクロの名前を変更する

追加されたマクロの名前を変更するには、「拡張機能」>「マクロ」>「マクロを管理」を選択します。

追加したマクロの名前をクリックして編集し、分かりやすい名前に変更します。

マクロにショートカットキーを設定することも可能です。
例:「Ctrl + Alt + Shift + 1」→ 空白行削除
  「Ctrl + Alt + Shift + 2」→ 空白列削除

STEP
マクロからスクリプトを実行

追加したマクロをクリックすると、スクリプトが実行されます。

空白行(列)の削除をしたいシートが複数ある場合は、この方法を使うと便利です。

まとめ

Google Apps Script(GAS)を使うことで、スプレッドシートの空白行や空白列を簡単に一括削除できます。

今回のスクリプトをコピーするだけで導入でき、マクロに登録すればワンクリックでの実行も可能です。

これにより、スプレッドシートの見た目が整理され、業務の効率化にもつながります。

空白行を削除したいシートが複数ある場合にご活用ください。

弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。

GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。

また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。

貴方の業務改善を全力でサポートいたします。

お問い合わせはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次