フィルターの活用
Excelでデータを検索するとき、「フィルター」機能を使って特定の条件に合うデータだけを表示することはとても便利です。しかし、毎回手動で操作するのは面倒だったり、うっかりミスが起きてしまうこともあります。
たとえば「今日発送する商品だけを表示したい」と思ったとき、
フィルター機能を開いて、
日付を選んで…と何度も繰り返すのは、意外と時間のかかる作業です。
そんなときこそマクロを使えば、ワンクリックで同じ結果が得られるようになります。
一度だけであれば不要な作業ですが、毎日する作業であれば、3、4回のクリックでも、1クリックで済むので、便利な機能です。
例1)「本日発送」のデータのみを抽出
まずは、一つ例を挙げて話をします。
例えば、 「発送データ」があり、その一覧から、今日の日付に発送予定となっているデータだけを抽出したいというケースを考えます。
これは営業や物流担当など、日々の進捗確認で非常に重要な作業になります。
マクロのコード例
Sub FilterTodayShipment()
Dim ws As Worksheet
Set ws = Sheets("発送データ")
' 先にフィルターをクリア
If ws.AutoFilterMode = True Then
ws.AutoFilterMode = False
End If
' 発送日に「本日」のみを設定
ws.Range("A1").AutoFilter Field:=3, Criteria1:=Date
MsgBox "本日発送のデータのみを抽出しました。"
End Sub
解説
このコードでは、C列(3列目)にある「発送日」のデータから、今日の日付と一致する行だけを表示するように設定しています。
「Field:=3」という指定が「3列目(C列)」を意味し、「Criteria1:=Date」は“今日の日付”という条件です。
Fieldは何列目を条件にするか?Criteria1は何を条件とするか?を指定します。
これを実行するだけで、一覧から今日発送するデータだけが絞り込まれるため、手作業よりも確実で素早く、しかも間違いがありません。
今回は一つだけでしたが、もちろん2つ以上の設定も可能です。
例2)「商品A」か「商品B」を抽出
次に紹介するのは、複数の商品をまとめて抽出したい場合のフィルターです。 たとえば「商品A」と「商品B」をキャンペーン対象として販売実績を確認したい、そんなときにもマクロが活躍します。
マクロのコード例
Sub FilterMultipleItems()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("商品リスト")
If ws.AutoFilterMode = True Then
ws.AutoFilterMode = False
End If
' 商品名が "商品A" または "商品B" のデータを抽出
ws.Range("A1").AutoFilter Field:=2, Criteria1:="商品A", Operator:=xlOr, Criteria2:="商品B"
MsgBox "商品A、商品Bのデータを抽出しました。"
End Sub
解説
このマクロは、B列(2列目)にある「商品名」に対して、「商品A」または「商品B」に一致する行だけを抽出します。
ポイントは Operator:=xlOr です。これは「または(OR条件)」を意味し、複数の条件をまとめて扱うための指定です。
この方法を覚えれば、いろんな組み合わせでフィルターをかけたいときにすぐ応用できます。
補足)データが存在しないときの処理
マクロを実行したけど、そもそもフィルターをかけるべきデータがなかった…。そんなときはエラーになる前に、事前チェックを入れることができます。
次のようなコードを最初に入れておくと安心です。
If Application.WorksheetFunction.CountA(ws.Range("A1").CurrentRegion) = 0 Then
MsgBox "データがありません"
Exit Sub
End If
これは、A1セルを含むデータ範囲(CurrentRegion)に値がまったく存在しない場合に「データがありません」と表示して、処理を止めることができます。
まとめ
フィルター機能のVBAは基本的な構成になっているので、今回説明したように、内容をコピーアンドペーストし、必要な部分だけを修正してもらえれば、使うことができます。
最初は「本日だけ抽出」などのシンプルなフィルターから始めて、慣れてきたら複数条件や日付などの値が変化するものについてもチャレンジしてみましょう。
毎日の繰り返し作業にこそ、マクロの効果は絶大です。ぜひ、あなたのExcel業務に取り入れてみてください!
コメント