excel

【Excel】エクセルで空白を左に詰める(関数・セル移動・自動整列・データ整理)方法

当サイトでは記事内に広告を含みます

【Excel】エクセルで空白を左に詰める(関数・セル移動・自動整列・データ整理)方法

エクセルでデータを整理していると、「途中に空白が混在していて見づらい」「空白を取り除いてデータを左側に詰めたい」という場面に遭遇することがあります。

特に、外部から取り込んだデータや、フィルター処理後のデータには空白セルが混在しがちです。

そのような場合に役立つのが、関数やセル移動機能を使って空白を取り除き、データを左に詰めるテクニックです。

この記事では、エクセルで空白を左に詰めるためのさまざまな方法を、わかりやすく段階的に解説していきます。

関数を使った方法から、手作業でのセル移動、自動整列まで幅広くカバーしますので、状況に応じた方法を見つけてください。

エクセルで空白を左に詰めるならIF+IFERROR+SMALL関数の組み合わせが有効

それではまず、関数を使って空白を左に詰める方法の中で最も汎用性が高いアプローチについて解説していきます。

結論として、IF関数・IFERROR関数・SMALL関数・INDEX関数などを組み合わせた配列数式が、エクセルで空白を左に詰めるための強力な方法です。

少し複雑に見えますが、一度数式を理解してしまえば応用が効くため、ぜひ習得しておきたいテクニックのひとつでしょう。

エクセル2021以降またはMicrosoft 365では、FILTER関数を使うことで空白を除いたデータを簡単に左詰めできます。

古いバージョンをお使いの場合は、以降で紹介する配列数式や手動の方法をご活用ください。

FILTER関数で空白を除いて左に詰める方法(Excel 2021以降)

Excel 2021またはMicrosoft 365をお使いであれば、FILTER関数が最もシンプルです。

=FILTER(A1:H1,A1:H1<>””)

(A1〜H1の範囲で空白でないセルだけを抽出して表示)

この数式を入力すると、空白を除いた値が自動的に左から詰めて表示されます。

スピル機能により結果が自動的に複数セルに展開されるため、追加の操作は不要です。

古いバージョン向け:配列数式で空白を左詰めする方法

Excel 2019以前のバージョンでは、以下のような配列数式を使います。

=IFERROR(INDEX($A$1:$H$1,SMALL(IF($A$1:$H$1<>””,COLUMN($A$1:$H$1)),COLUMN(A1))),””)

※Ctrl+Shift+Enterで確定(配列数式)

この数式は「空白でないセルの列番号を小さい順に取得し、左から順にINDEXで値を抽出する」という仕組みです。

横方向(行)に数式をコピーすることで、空白を左に詰めた状態のデータが並んで表示されます。

縦方向(列)に空白を上に詰める応用方法

横方向だけでなく、縦方向の空白を詰めるケースにも同様の考え方が応用できます。

FILTER関数を縦方向に使う場合は次のようになります。

=FILTER(A1:A10,A1:A10<>””)

(A列の空白を除いた値を縦に詰めて表示)

縦方向の空白詰めは、リストの整理や名簿データのクリーニングに特に役立つでしょう。

手動でセルを移動して空白を左に詰める方法

続いては、関数を使わずに手動でセルを移動して空白を左に詰める方法を確認していきましょう。

少量のデータであれば、手動操作が最もシンプルで確実な方法です。

ジャンプ機能で空白セルを一括選択して削除する方法

空白セルを手動で詰める場合、ジャンプ機能を使うと効率的です。

対象範囲を選択して「Ctrl+G」→「セル選択」→「空白セル」を選ぶと、空白セルだけが選択されます。

選択状態のまま右クリックして「削除」→「左方向にシフト」を選ぶと、空白が削除されてデータが左に詰まります

素早く確実に空白を詰めたい場合に非常に便利な手順です。

フィルターで空白を非表示にして見た目を整える方法

データを物理的に移動させたくない場合は、フィルターで空白を非表示にする方法が簡単です。

フィルターをかけて「(空白)」のチェックを外すと、空白セルを含む行が非表示になります。

これはあくまで表示上の操作であり、実際のデータは変わらない点がポイントです。

印刷や画面表示用に「空白のない状態」を一時的に作りたい場合に有効でしょう。

並べ替えを使って空白を末尾にまとめる方法

列単位で空白を末尾に追いやりたい場合は、並べ替え機能が便利です。

対象列を選択して「データ」→「昇順」または「降順」で並べ替えると、空白セルが末尾にまとまります。

並べ替えで空白を後ろにまとめてからデータ部分だけを使うという方法は、シンプルかつ直感的な整理法として広く活用されています。

Power Queryで空白を左に詰めて自動整列する方法

続いては、Power Queryを活用して空白を自動整列する方法を確認していきましょう。

定期的に更新されるデータを扱う場合は、Power Queryを使って処理を自動化しておくと非常に便利です。

Power Queryでnull(空白)を除いてデータを整列する手順

Power Queryエディターでは、列内のnull(空白)を簡単に除去できます。

列を選択して「ホーム」→「行の削除」→「空白行の削除」を選ぶと、空白が含まれる行をまとめて削除できます。

横方向への詰め処理はPower Queryが苦手とする部分ですが、縦方向(行方向)の空白削除には非常に優れた機能を持っています。

Power QueryはCSVやデータベースからのデータ取り込みと組み合わせると特に威力を発揮するでしょう。

Power Queryでリストをクリーニングして整理する方法

Power Queryでは、空白除去だけでなく、データのトリミング(余分なスペース除去)や型変換なども同時に行えます。

「変換」タブの「トリミング」や「クリーン」機能を使うと、見えない空白文字も含めてデータをきれいに整理できます。

クリーニングの処理はクエリとして保存されるため、次回以降のデータ更新時にはボタン一つで同じ処理を再実行できます。

VBAで空白を左に詰めるマクロの作り方

VBAを使うことで、より複雑な条件での空白詰め処理を自動化できます。

Sub FillLeft()

Dim i As Long, j As Long, k As Long

For i = 1 To 10 ‘行数を指定

k = 1

For j = 1 To 8 ‘列数を指定

If Cells(i, j).Value <> “” Then

Cells(i, k).Value = Cells(i, j).Value

k = k + 1

End If

Next j

For j = k To 8

Cells(i, j).Value = “”

Next j

Next i

End Sub

このマクロは行ごとに空白でない値を左から詰めて並べ直し、余った部分を空白で埋めます。

毎週や毎月の定型作業であれば、マクロを登録しておくだけで大幅な時間短縮になるでしょう。

空白詰め処理に関するよくある問題とその解決策

続いては、空白を左に詰める操作でよく起こる問題とその解決策を確認していきましょう。

問題 原因 解決策
FILTERが使えない Excel 2019以前を使用 配列数式またはVBAを使用
空白に見えるが残ってしまう スペースや改行コードが含まれる TRIM関数で前処理する
削除後にセルがずれる シフト方向の誤設定 「左方向にシフト」を確認して削除
処理後に数式が壊れる 参照先のセルが移動した 処理前に値貼り付けで数式を固定

空白に見えるが詰められない場合の対処法

空白に見えるのに処理されない場合は、セルにスペースや改行コードが入力されている可能性があります。

TRIM関数やCLEAN関数を使って不要な文字を除去してから処理することをおすすめします。

=TRIM(CLEAN(A1))

(余分なスペースと制御文字をまとめて除去)

詰め処理後に元のレイアウトが崩れた場合の対処

セルを削除して左方向にシフトすると、意図しない範囲のセルも移動してしまうことがあります。

このトラブルを防ぐには、処理前にデータのバックアップを取っておくことが最も重要です。

また、削除操作の代わりに値を空文字列で上書きする方法を使えば、セル自体は移動しないためレイアウトへの影響を最小限に抑えられます

大量データで処理が遅くなる場合の対処法

数万行のデータに対して配列数式を使うと、計算に時間がかかることがあります。

処理が終わったら数式を値に変換するか、Power QueryやVBAで処理することを検討しましょう。

特にPower Queryは大量データの処理に最適化されているため、パフォーマンス面でも優れた選択肢となるでしょう。

まとめ

この記事では、エクセルで空白を左に詰める方法をさまざまな角度から解説しました。

Excel 2021以降であればFILTER関数で手軽に空白を除いた左詰めデータが作成できます。

旧バージョンでは配列数式や手動のセル削除、VBAマクロなどの方法が有効です。

定期的にデータを更新する場合はPower QueryやVBAを活用して自動化しておくと、業務効率が大きく向上するでしょう。

データの性質や使用するエクセルのバージョンに合わせて、最適な方法を選んでみてください。