Excel VBAでは、AutoFilter(フィルタ)とSort(並び替え)を組み合わせることで、
「特定条件でデータを抽出した上で、並び替えを行う」といった実務に直結する処理を自動化できます。
例えば、「売上100以上のデータを抽出し、その後日付順に並び替える」といった処理は、日常業務でよく登場します。
ここでは、その基本構文と実例をわかりやすく解説します。
1. フィルタで絞り込み → 結果を並び替える基本構文
基本の流れ
AutoFilter
で特定の条件を絞り込むSort
を使って絞り込んだ結果を並び替える
この2ステップを組み合わせることで、抽出後に順序を整理した一覧を作れます。
2. サンプルコード例
Sub フィルタ後に並び替え()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
'データ範囲を取得(見出し付き)
Dim targetRange As Range
Set targetRange = ws.Range("A1:D20")
'1. フィルタで「売上(C列)が100以上」を抽出
targetRange.AutoFilter Field:=3, Criteria1:=">=100"
'2. 絞り込み結果を「日付(B列)」で昇順に並び替え
With ws.Sort
.SortFields.Clear
.SortFields.Add Key:=ws.Range("B2:B20"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange targetRange
.Header = xlYes
.Apply
End With
End Sub
コードの解説
targetRange.AutoFilter Field:=3, Criteria1:=">=100"
→ C列(3列目)の値が100以上のデータだけを表示SortFields.Add Key:=Range("B2:B20")
→ B列をキーに昇順ソートを設定.SortFields.Clear
→ 前回のソート条件をリセット(忘れると条件が重複するため必須).Header = xlYes
→ 1行目を見出しとして扱う指定
3. 実務での利用シーン
- 営業データの管理
→ 「売上100万円以上の顧客を抽出 → 契約日順に並べる」 - 在庫管理
→ 「在庫数が10以下の商品を抽出 → 商品名で昇順に並べる」 - 人事データ分析
→ 「勤続年数5年以上の社員を抽出 → 入社日で並び替える」
このように、「フィルタ」と「ソート」を組み合わせると、単純な抽出よりもさらに使いやすい形でデータを整理できます。
4. まとめ
- フィルタ → 並び替えは実務で頻繁に登場する自動化パターン
- VBAでは、
AutoFilter
で抽出した後にSort
を組み合わせることで処理可能 .SortFields.Clear
を忘れないのが安定稼働のポイント
コメント