「あぁ……まただ。1,000行もある名簿の中に、数カ所だけ住所が抜けてる。これ、手で探してたら日が暮れちゃうよ……。フィルタで『空白』にチェックを入れるだけの作業だけど、これが毎日5ファイルもあると、地味に指が疲れるんだよね」
そんな風に思ったことはありませんか?
実は、私も昔はそうでした。そんな苦い経験から学んだのが、「機械にできることは、すべて機械に任せる」という鉄則です。
VBAを活用すれば、マウスをカチカチ動かす時間をほぼゼロにできます。手作業なら1回30秒かかるフィルタ操作も、100回繰り返せば50分のロス。VBAなら、その50分を丸ごと別の重要な仕事や新しいスキルの学習時間に充てることができます。
今日は、VBA初心者の方でもコピペで今すぐ使える「空白」と「空白以外」を抽出するコードをご紹介します。
「空白」を抽出するコード
まずは、データが入力されていないセルだけを表示させるコードです。
条件指定に「=」を用いるだけで、簡単に空白を表現できるのがポイントになります。
Sub FilterBlanks()
' シート「データ」の1行目2列目にある見出しに対してフィルタをかけます
With Worksheets("データ")
.AutoFilterMode = False ' いったんフィルタを解除してリセット
.Range("A1").AutoFilter Field:=2, Criteria1:="="
End With
MsgBox "空白セルの抽出が完了しました!"
End Sub
「空白以外」を抽出するコード
次に、データが入っている行だけを残すコードです。
ここでは、比較演算子である「<>」を使用します。これは「〜ではない(等しくない)」という意味を持つ記号になります。
Sub FilterNonBlanks()
With Worksheets("データ")
.AutoFilterMode = False
.Range("A1").AutoFilter Field:=2, Criteria1:="<>"
End With
MsgBox "データがある行だけを表示しました!"
End Sub
解説:フィルタの仕組み
VBAのオートフィルタの仕組みは、「学校の出席確認」に例えるとスムーズに理解しやすいと思います。
- Field(フィールド): 「出席番号の列」「名前の列」など、どの列をチェックするか決めます。
- Criteria(クライテリア): 「今日はメガネをかけている人だけ立って!」というルールのことです。
- “=” : 「名前が書いていない人(空白)」を探します。
- “<>” : 「名前が書いてある人(空白以外)」を探します。
ぜひ活用してみてください!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント