【Excel時短】もうポチポチしない!複数列のフィルター抽出をVBAで一瞬にする方法

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

実務でよくあるのが、「A列で商品を選び、B列で日付を絞り、C列で担当者を選ぶ」という作業。手動でやると1回30秒〜1分はかかりますよね。

今回はそんな手間を省略する方法を紹介します。

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

コピペでOK!複数列を同時に絞り込むVBAコード

今回は、以下の条件でデータを抜き出すコードを用意しました。

  • 1列目(部署)が「営業部」
  • 3列目(売上)が「50,000以上」

Excelの「開発」タブから「Visual Basic」を開き、標準モジュールに貼り付けてみてください。

Sub MultiColumnFilter()
    ' シート名を「売上データ」として指定します
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("売上データ")
   
    ' いったんフィルターを解除して、真っさらな状態にします
    If ws.AutoFilterMode Then
        ws.AutoFilterMode = False
    End If
   
    ' 1行目に見出しがある表(A1から始まる表)を対象にします
    With ws.Range("A1")
        ' 1列目(Field:=1)を「営業部」で抽出
        .AutoFilter Field:=1, Criteria1:="営業部"
       
        ' 3列目(Field:=3)を「50000以上(>=50000)」で抽出
        .AutoFilter Field:=3, Criteria1:=">=50000"
    End With
   
    MsgBox "抽出が完了しました!"
End Sub

このコードのポイント

ただ抽出するだけでなく、最初に「フィルターの解除」を入れているのがポイントです。

既にフィルターがかかっている状態で新しい条件を上書きしようとすると、挙動がおかしくなるのを防ぐための対策です。

また、手動操作では「5万円以上」などの数値条件を入力する際にミスが起きやすいですが、プログラムなら正確性は100%。人間が疲れていても、プログラムは疲れません。

似たようなデータを似たような条件でフィルタリングしないといけないことも実務では多いですよね。あらかじめマクロを組んでおけば、それらをワンクリックで片付けられます!

ぜひ試してみてください。

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


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

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

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

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

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

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

コメント

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