人材データの中から、希望勤務地や経験年数などの条件で対象者を絞り込みたい場面は多くあります。
しかし、毎回フィルター条件をマクロの中に書いてしまうと、条件変更のたびに修正が必要になってしまいます。
今回は、ユーザーがセルに記入した条件を元に、人材データを自動で抽出するマクロをご紹介します。
条件はシート上に記入するだけで反映されるため、汎用性が高く、業務にすぐ取り入れやすい構成です。
条件セルを参照して人材データを抽出するマクロ
次のマクロでは、勤務地(G1セル)と経験年数(G2セル)を抽出条件として使います。
Sub FilterCandidateFlexible()
Dim ws As Worksheet
Dim loc As String
Dim exp As Variant
Set ws = Sheets("人材データ")
' 条件セルの値を取得
loc = ws.Range("G1").Value
exp = ws.Range("G2").Value
With ws
.AutoFilterMode = False
.Range("A1:E1").AutoFilter
' 勤務地でのフィルター
If loc <> "" Then
.Range("A1:E1").AutoFilter Field:=4, Criteria1:=loc
End If
' 経験年数でのフィルター(以上)
If exp <> "" Then
.Range("A1:E1").AutoFilter Field:=5, Criteria1:=">=" & exp
End If
End With
MsgBox "条件に一致する人材を抽出しました", vbInformation
End Sub
このコードでは、「人材データ」シートの次の列を対象としています。
- A列:氏名
- B列:年齢
- C列:性別
- D列:希望勤務地
- E列:経験年数
- G1セル:勤務地の抽出条件
- G2セル:経験年数の抽出条件
条件が未入力の場合は、その条件での抽出をスキップします。
実装するメリット
この方法を取り入れることで、次のようなメリットがあります。
- 抽出条件をセルから柔軟に変更できる
- マクロの修正が不要になる
- 誰が見ても条件が明確でわかりやすい
- 定型業務の効率が上がる
また、勤務地や経験年数に限らず、他の条件(年齢や性別など)にも簡単に応用が可能です。
まとめ
人材データの抽出は、セルから条件を参照することで柔軟かつメンテナンスしやすくなります。
- G列に入力された条件をもとに、フィルター抽出
- マクロの修正不要で、利用者自身が抽出条件を管理可能
- 汎用的な構造で、応用の幅が広がる
条件付きのフィルター処理は、VBAの中でも実務でよく使われるテクニックです。
日々の管理作業にうまく組み込んで、Excel業務を効率化していきましょう。


