• 作成日 : 2025年12月2日

スプレッドシートで空白行を削除するには?効率的なデータクリーニングの実践方法

スプレッドシートで空白行を削除することで、データの集計や分析の精度が向上します。本記事では、Googleスプレッドシートやエクセルでフィルタ機能を使った簡単な削除方法から、関数による自動判定、Google Apps Script(GAS)での一括処理まで詳しく解説します。

大量データの空白行除去や、定期的なデータクリーニングを効率化する実践的なテクニックを紹介します。

エクセルとGoogleスプレッドシートの空白行の削除機能の違い

エクセル(Excel)では、「ホーム」タブの「検索と選択」から「条件を選択してジャンプ」機能を使い、空白セルを一括選択して行削除が可能です。一方、Googleスプレッドシート(スプシ)では、フィルター機能やQUERY関数を活用した削除方法が主流です。

また、Googleスプレッドシートではブラウザベースの特性を活かし、複数人での同時編集時も空白行削除の操作が反映されます。

フィルタ機能を使った空白行の削除方法は?

フィルタ機能を使用すれば、プログラミング知識なしで簡単に空白行を特定し、一括削除できます。 具体的な操作手順を詳しく解説します。

STEP1:データ範囲の選択とフィルタの適用

まず、空白行を含むデータ全体を選択します。列見出しがある場合は、それも含めて選択します。Googleスプレッドシートでは、「データ」→「フィルタを作成」をクリックし、各列の見出しにフィルターアイコンが表示されることを確認します。エクセルでも同様に、「データ」タブから「フィルター」を選択します。

STEP2:空白行の特定とフィルタリング

主要な列(例:ID列や名前列)のフィルターアイコンをクリックし、フィルター条件を設定します。Googleスプレッドシートでは、「条件でフィルタ」→「空白」を選択します。これにより、選択した列で空白のセルを含む行のみが表示されます。複数の列で同時に空白をチェックしたい場合は、各列で順番にフィルター設定を行います。

STEP3:フィルタされた空白行の一括削除

空白行のみが表示された状態で、行番号をクリックして選択します。複数行を選択する場合は、Shiftキーを押しながら範囲選択、またはCtrlキー(Macは⌘キー)を押しながら個別選択します。右クリックして「行を削除」を選択すると、選択した空白行が削除されます。削除後は必ずフィルターを解除し、データ全体を確認します。

フィルタ削除の注意点

フィルターで削除する際には、削除前に必ずバックアップを取りましょう。また、フィルターが正しく適用されているか、プレビューで確認することも大切です。部分的に空白のある行を誤って削除しないよう、複数の列で条件を組み合わせて慎重に判定します。大量のデータを扱う場合は、段階的に削除を行い、都度確認することを推奨します。

関数を使って空白行を除外・削除する方法は?

関数を使用することで、元データを保持しながら空白行を除外した新しいデータセットを作成でき、より安全なデータ処理が可能です。 実践的な関数の活用方法を紹介します。

FILTER関数による空白行の除外

FILTER関数は、条件に合致するデータのみを抽出する強力な機能です。空白行を除外する基本的な構文は以下の通りです。

=FILTER(A:D, A:A<>””)

この関数は、A列が空白でない行のみを抽出します。複数条件での除外も可能です。

=FILTER(A:D, (A:A<>””)*(B:B<>””))

この例では、A列とB列の両方に値がある行のみを抽出します。

QUERY関数を使った高度な空白行処理

GoogleスプレッドシートのQUERY関数を使えば、SQLライクな記述で柔軟な空白行除外が可能です。

=QUERY(A:D, “SELECT * WHERE A IS NOT NULL AND B IS NOT NULL”, 1)

特定の列のみをチェックする場合や、部分的な空白を許容する場合の処理も簡単です。

=QUERY(A:D, “SELECT * WHERE A IS NOT NULL OR B IS NOT NULL OR C IS NOT NULL”, 1)

この例では、いずれかの列に値があれば、その行を抽出します。

ARRAYFORMULA関数と組み合わせた動的処理

ARRAYFORMULA関数を使用して、空白行を動的にマークし、後で削除する準備をすることもできます。

=ARRAYFORMULA(IF(LEN(A:A&B:B&C:C&D:D)=0, “削除対象”, “保持”))

この数式をE列に入力すると、全ての列が空白の行に「削除対象」というマークが付きます。後でこのマークを基準にフィルタリングや削除が可能です。

UNIQUE関数での重複空白行の処理

空白行が連続している場合、UNIQUE関数で重複を除去できます。

=UNIQUE(FILTER(A:D, LEN(A:A&B:B&C:C&D:D)>0))

この関数は、空白行を除外した後、重複行も同時に削除します。データのクリーニングと重複除去を一度に行える効率的な方法です。

Google Apps Script(GAS)で空白行を自動削除する方法は?

GASを使用すれば、大量の空白行を高速で削除でき、定期的な自動実行も設定可能です。 実用的なスクリプトと活用方法を解説します。

基本的な空白行削除スクリプト

完全に空白の行を削除する基本的なGASスクリプトは以下の通りです。

javascript

function deleteEmptyRows() {

var sheet = SpreadsheetApp.getActiveSheet();

var data = sheet.getDataRange().getValues();

var rowsToDelete = [];

// 空白行を特定

for (var i = data.length – 1; i >= 0; i–) {

var row = data[i];

var isEmpty = true;

for (var j = 0; j < row.length; j++) {

if (row[j] !== ”) {

isEmpty = false;

break;}}

if (isEmpty) {

rowsToDelete.push(i + 1); // 行番号は1から始まる}}

// 下から順に削除(インデックスがずれないように)

for (var k = 0; k < rowsToDelete.length; k++) {

sheet.deleteRow(rowsToDelete[k] – k);}

SpreadsheetApp.getUi().alert(rowsToDelete.length + ‘ 行の空白行を削除しました。’);}

条件付き空白行削除の実装

特定の列のみをチェックして空白行を削除する、より柔軟なスクリプト:

javascript

function deleteRowsWithEmptyKeyColumns() {

var sheet = SpreadsheetApp.getActiveSheet();

var data = sheet.getDataRange().getValues();

var keyColumns = [0, 1]; // A列とB列をチェック

var rowsToDelete = [];

for (var i = data.length – 1; i >= 1; i–) { // ヘッダー行をスキップ

var isKeyEmpty = true;

for (var j = 0; j < keyColumns.length; j++) {

if (data[i][keyColumns[j]] !== ”) {

isKeyEmpty = false;

break;}}

if (isKeyEmpty) {

rowsToDelete.push(i + 1);}}

// バッチ削除で高速化

if (rowsToDelete.length > 0) {

var rangesToDelete = [];

var start = rowsToDelete[0];

var count = 1;

for (var k = 1; k < rowsToDelete.length; k++) {

if (rowsToDelete[k] === rowsToDelete[k-1] – 1) {

count++;

} else {

sheet.deleteRows(start – count + 1, count);

start = rowsToDelete[k];

count = 1;}}

sheet.deleteRows(start – count + 1, count);}}

定期実行とトリガー設定

トリガーから全シートの空白行を削除するための、呼び出し先関数も含めたサンプルコードを掲載します。

function setupDailyCleanup() {

ScriptApp.newTrigger(‘deleteEmptyRowsInAllSheets’)

.timeBased()

.everyDays(1)

.atHour(2) // 午前2時に実行

.create();}

function deleteEmptyRowsInAllSheets() {

var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

sheets.forEach(function(sheet) {

// 設定シートやマスターシートは除外

if (sheet.getName() !== ‘設定’ && sheet.getName() !== ‘マスター’) {

deleteEmptyRowsInSheet(sheet);}});

// 実行ログをメール送信

var message = ‘空白行削除処理が完了しました。n処理日時: ‘ + new Date();

GmailApp.sendEmail(‘[email protected]’, ‘空白行削除完了通知’, message);}

// 指定シートの完全に空白な行を削除する関数

function deleteEmptyRowsInSheet(sheet) {

var data = sheet.getDataRange().getValues();

var rowsToDelete = [];

// 下から上に向かってチェック(インデックスずれ防止)

for (var i = data.length – 1; i >= 0; i–) {

var row = data[i];

var isEmpty = true;

for (var j = 0; j < row.length; j++) {

if (row[j] !== ”) {

isEmpty = false;

break;}}

if (isEmpty) {

rowsToDelete.push(i + 1); // シート上の行番号は1始まり}}

// まとめて削除

rowsToDelete.forEach(function(rowIndex, idx) {

sheet.deleteRow(rowIndex – idx);});}

パフォーマンス最適化のテクニック

大量データでの空白行削除を高速化する工夫:

javascript

function optimizedDeleteEmptyRows() {

var sheet = SpreadsheetApp.getActiveSheet();

var range = sheet.getDataRange();

var values = range.getValues();

var newData = [];

// 空白でない行のみを新しい配列に追加

values.forEach(function(row) {

if (row.some(function(cell) { return cell !== ”; })) {

newData.push(row);}});

// シートをクリアして新しいデータを一括挿入

sheet.clear();

if (newData.length > 0) {

sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);}}

スプレッドシートの空白行を効率的に削除

データ分析の精度を高めるため、スプレッドシートの空白行を効率的に削除する方法を解説しました。

  1. フィルター機能
    プログラミング不要で、主要列で「空白」を特定し、手動で一括削除する方法です(Excel・スプシ共通)。
  2. 関数(FILTER/QUERY)
    元データを保持しつつ、空白行を除外した新しいデータセットを安全に作成できます。
  3. GAS(Google Apps Script)
    大量データを高速処理したり、定期的な自動削除を設定したりするのに最適です。

用途やデータ量に応じて、最適な方法を選び、効率的なデータクリーニングを行いましょう。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事