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

スプレッドシートでデータを管理していると、不要な空白行や空白列 が増えてしまうことありませんか?
空白行の削除方法には、フィルター機能を使って空白セルを抽出して削除する方法や、QUERY関数 を使って空白行を除外する方法などがあります。
ですが、シートが複数ある場合や定期的に処理を行いたい場合 には、Google Apps Script を使うとより効率的です。
そこで、Google Apps Script(GAS)を使った空白行・空白列の削除方法 をご紹介します。
GASを活用すれば、空白行の削除を繰り返す場合もカンタンにできるため、作業効率が向上します。

完成イメージ
スクリプト実行前(空白行・列がある状態)

スクリプト実行後

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

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

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

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();
}
このスクリプトを実行すると、空白行と空白列を削除の両方をまとめて実行 できます。

スクリプトを書いたら、名前を付けて保存します。
(例:「空白行の削除」)

不要な空白行が削除され、データを整理できます。
マクロ登録で簡単実行(ショートカットキー設定可)

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

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

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

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

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

追加したマクロの名前をクリックして編集し、分かりやすい名前に変更します。
マクロにショートカットキーを設定することも可能です。
例:「Ctrl + Alt + Shift + 1」→ 空白行削除
「Ctrl + Alt + Shift + 2」→ 空白列削除

追加したマクロをクリックすると、スクリプトが実行されます。
空白行(列)の削除をしたいシートが複数ある場合は、この方法を使うと便利です。

まとめ
Google Apps Script(GAS)を使うことで、スプレッドシートの空白行や空白列を簡単に一括削除できます。
今回のスクリプトをコピーするだけで導入でき、マクロに登録すればワンクリックでの実行も可能です。
これにより、スプレッドシートの見た目が整理され、業務の効率化にもつながります。
空白行を削除したいシートが複数ある場合にご活用ください。
弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。
GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。
また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。
貴方の業務改善を全力でサポートいたします。
コメント