実務で即戦力!VBAでオートフィルタを自在に操るコツと「データ消失」を防ぐ方法

【業務効率化】VBA
スポンサーリンク

業務の中で、リストから特定の条件に合うデータを絞り込む作業は頻繁に発生しますよね。

手作業だと1回30秒かもしれませんが、1日20回、1ヶ月(20日)続ければ、それだけで200分(約3時間以上)も「カチカチ」している計算になります。

今回はこの無駄を減らすVBAのAutoFilterをご紹介します。

プログラミングと聞くと難しく感じるかもしれませんが、VBAのAutoFilterは、皆さんが普段Excelで使っている「フィルタボタン」を、PCが代わりに押してくれるシンプルな機能です。

つまり、AutoFilterはたった数行で世界が変わる、非常に有効な時短テクニックの1つになります。

【業務効率化】VBAの記事を見る 

さっそく使ってみよう!基本のコード

それでは、最もシンプルな基本コードを見ていきましょう。以下のコードをコピーして、Excelの標準モジュールに貼り付けてみてください。

Sub SimpleFilter()
    ' 「売上データ」という名前のシートで作業します
    With Sheets("売上データ")
       
        ' すでに設定されているフィルタを解除してリセット
        If .AutoFilterMode Then
            .AutoFilterMode = False
        End If
       
        ' A1セルを含む表全体に対して、B列でフィルタを実行します
        .Range("A1").AutoFilter Field:=2, Criteria1:="田中"
       
    End With
   
    MsgBox "抽出完了!"
End Sub

ここがポイント!Fieldの数え方

VBA初心者が特に迷いやすいポイントが、「Field:=2」という記述です。これは「対象となる表の左から何番目の列か」を指定しています。

  • 1列目(A列など)を絞りたいなら、Field:=1
  • 2列目(B列など)を絞りたいなら、Field:=2

私の恥ずかしい失敗談:データが消えた!?

実は私、初心者の頃にこのAutoFilterで大パニックになったことがあります。

コードを実行したら、データが全部消えた!」と慌てたことがありました。

いろいろ調べてみると、「前回かけたフィルタが残ったまま、新しいフィルタを重ねてしまったこと」が原因でした。

つまり、「東京支店」で絞り込まれている状態に対して、さらに「大阪支店」という条件で重ねて絞り込もうとしたため、「該当データなし」と判定され、画面が真っ白(すべての行が非表示)になっていたのです。

そのため、基本コードの最初に記述したIf .AutoFilterMode Then .AutoFilterMode = False(もしフィルタが設定されていれば解除する)という一文が極めて重要になります。
AutoFilterを扱う際は、ぜひこの解除処理をセットで記述するようにしてください。

【業務効率化】VBAの記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました