目次
概要
Excel では、オートフィルター機能を利用して指定列の 空白セル だけを抽出し、後続の確認や一括入力を効率化できます。本記事では、VBA を用いて空セルを瞬時にフィルタリングし、処理後にフィルターを解除するまでの一連の流れをご紹介いたします。
前提条件
| 項目 | 内容 |
|---|---|
| 対応 Excel | Microsoft 365 または 2016 以降 |
| データ範囲 | D4:G50 に見出し行を含む表が配置されている想定 |
| マクロ設置先 | 標準モジュール |
サンプルコード(VBA)
Sub FilterBlanksOnly()
Dim ws As Worksheet
Dim targetRange As Range ' フィルター対象範囲
Set ws = ActiveSheet
Set targetRange = ws.Range("D4").CurrentRegion ' 見出し行を含む範囲を自動取得
'----- 空白セルのみを抽出(例:5 列目)-----
targetRange.AutoFilter Field:=5, Criteria1:="="
' (抽出結果に対して必要な処理をここで実施)
'----- 抽出条件を解除 -----
targetRange.AutoFilter
'----- フィルター自体を無効化 -----
If ws.AutoFilterMode Then
ws.AutoFilterMode = False
End If
End Sub
コード解説
| 行 | 説明 |
|---|---|
| 7 | Range("D4").CurrentRegion で表全体を取得しています。開始セルは実データに合わせて変更してください。 |
| 10 | Field:=5 は範囲内の 5 列目を指し、Criteria1:="=" で空セルのみを抽出しています。 |
| 15 | targetRange.AutoFilter(引数なし)で抽出条件を解除し、すべての行を再表示いたします。 |
| 18–20 | AutoFilterMode = False によりフィルター自体をオフにし、見出し行の矢印も非表示に戻しています。 |
応用例
| 目的 | 実装のヒント |
|---|---|
| 複数列を同時に空白抽出 | 2 回目以降の AutoFilter で別の Field を指定し、空セル抽出を追加します(AND 条件)。 |
| 空白セルを一括入力 | SpecialCells(xlCellTypeBlanks).Value = "N/A" のように可視セルへ入力可能です。 |
| 空白セルを行ごと削除 | EntireRow.Delete を SpecialCells と組み合わせることで不要行を一括削除できます。 |
よくある質問
| 質問 | 回答 |
|---|---|
| Table(リストオブジェクト)形式でも使えますか。 | テーブル名を ListObjects("TableName").Range に置き換えると同じ手順で操作できます。 |
| 非空セルだけを抽出する場合の指定方法は。 | Criteria1:="<>", Operator:=xlAnd と設定します。 |
まとめ
オートフィルターの Criteria1:=”=” を活用すると、VBA から空白セルのみを素早く抽出できます。まずはサンプルコードを実行し、対象列の空セルが正しく抽出されることをご確認ください。抽出後の処理や解除方法も合わせて習得いただくと、日常業務を一層効率化できます。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
