- 更新日 : 2026年4月28日
スプレッドシートで空白行を削除するには?効率的なデータクリーニングの実践方法
スプレッドシートで空白行を削除することで、データの集計や分析の精度が向上します。本記事では、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);}}
スプレッドシートの空白行を効率的に削除
データ分析の精度を高めるため、スプレッドシートの空白行を効率的に削除する方法を解説しました。
- フィルター機能:
プログラミング不要で、主要列で「空白」を特定し、手動で一括削除する方法です(Excel・スプシ共通)。 - 関数(FILTER/QUERY):
元データを保持しつつ、空白行を除外した新しいデータセットを安全に作成できます。 - GAS(Google Apps Script):
大量データを高速処理したり、定期的な自動削除を設定したりするのに最適です。
用途やデータ量に応じて、最適な方法を選び、効率的なデータクリーニングを行いましょう。
システム乱立を解消するためのステップとは?
多くの企業がバックオフィス業務効率化のため多様なクラウドシステムを導入するも、「便利なはずが非効率」という現実に直面しています。
その原因は、勤怠や経費など「部分最適」なシステム導入による乱立です。システム同士がつながらず、データの手入力やExcelでの突き合わせ作業が常態化。
これは「見えないコスト」を増やし、業務フローを複雑化させ、現場の負担を増大させます。システム乱立のリスクを整理し、業務アセスメントによる根本解決策をご紹介するホワイトペーパーを用意していますので、ぜひお気軽にご覧ください。
※ 掲載している情報は記事更新時点のものです。
※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。
スプレッドシート データ操作・集計の関連記事
新着記事
-
# 業務効率化の基本
クラウドのメリット・デメリットは?主要サービスやオンプレミスとの比較表をもとに解説
クラウドのメリット・デメリットは? クラウドは、初期費用を抑えて迅速な導入や拡張ができる点が大きなメリットですが、ネット環境への依存や長期的なコスト増といったデメリットも伴います。…
詳しくみる -
# 業務効率化の基本
社外へのファイル共有を安全に行う方法は?リスクやツール選びのポイントを徹底解説
社外へのファイル共有を安全に行う方法は? 社外へのファイル共有は、機密保持のためクラウドストレージ等の専用ツールを活用し、適切な権限管理と期限設定のもとで行うべき重要な業務プロセス…
詳しくみる -
# 業務効率化の基本
マニュアルの種類は?業務・規範・安全管理など目的別に作成する方法を解説
マニュアルの種類は? マニュアルの種類は、活用目的や対象読者に応じて「業務」「操作」「規範」「教育・訓練」「作業」「製品」「安全・危機管理」の7つに大別されます。 業務・操作: 全…
詳しくみる -
# メモ
Windowsのメモ帳で文字を検索するには?文字列を置換・ファイルを横断検索する方法も解説
Windowsのメモ帳で文字を検索するには? Windowsのメモ帳で文字を検索するには、ショートカットキー「Ctrl + F」を使用するのが効率的です。 検索・置換:Ctrl +…
詳しくみる -
# 業務効率化の基本
ノウハウを蓄積するには?組織の知識を資産に変える方法・仕組みづくり・ツール選びを解説
ノウハウの蓄積方法まとめ ノウハウの蓄積とは、個人の経験や技術(暗黙知)を文書や動画などの形式知へ変換し、組織全体で共有・再利用できる資産に変えるプロセスです。 属人化の解消: 担…
詳しくみる -
# ツール
チャットが苦手だと感じる理由は?原因・特徴・克服するためのコツを徹底解説
チャットが苦手だと感じる理由は? チャットが苦手な主な理由は、即時返信へのプレッシャーや感情が伝わりにくい不安にあり、無理に速度を追わず運用ルールを整えることが克服の鍵です。 脱・…
詳しくみる
