Excel VBA で空白セルだけを抽出するオートフィルター設定【実用マクロ】

目次

概要

Excel では、オートフィルター機能を利用して指定列の 空白セル だけを抽出し、後続の確認や一括入力を効率化できます。本記事では、VBA を用いて空セルを瞬時にフィルタリングし、処理後にフィルターを解除するまでの一連の流れをご紹介いたします。


前提条件

項目内容
対応 ExcelMicrosoft 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

コード解説

説明
7Range("D4").CurrentRegion で表全体を取得しています。開始セルは実データに合わせて変更してください。
10Field:=5 は範囲内の 5 列目を指し、Criteria1:="=" で空セルのみを抽出しています。
15targetRange.AutoFilter(引数なし)で抽出条件を解除し、すべての行を再表示いたします。
18–20AutoFilterMode = False によりフィルター自体をオフにし、見出し行の矢印も非表示に戻しています。

応用例

目的実装のヒント
複数列を同時に空白抽出2 回目以降の AutoFilter で別の Field を指定し、空セル抽出を追加します(AND 条件)。
空白セルを一括入力SpecialCells(xlCellTypeBlanks).Value = "N/A" のように可視セルへ入力可能です。
空白セルを行ごと削除EntireRow.DeleteSpecialCells と組み合わせることで不要行を一括削除できます。

よくある質問

質問回答
Table(リストオブジェクト)形式でも使えますか。テーブル名を ListObjects("TableName").Range に置き換えると同じ手順で操作できます。
非空セルだけを抽出する場合の指定方法は。Criteria1:="<>", Operator:=xlAnd と設定します。

まとめ

オートフィルターの Criteria1:=”=” を活用すると、VBA から空白セルのみを素早く抽出できます。まずはサンプルコードを実行し、対象列の空セルが正しく抽出されることをご確認ください。抽出後の処理や解除方法も合わせて習得いただくと、日常業務を一層効率化できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次