スポンサーリンク

【VBA】フィルタ+並び替えの組み合わせ:結果を絞り込み後に並び替える方法

Excel VBAでは、AutoFilter(フィルタ)とSort(並び替え)を組み合わせることで、
「特定条件でデータを抽出した上で、並び替えを行う」といった実務に直結する処理を自動化できます。

例えば、「売上100以上のデータを抽出し、その後日付順に並び替える」といった処理は、日常業務でよく登場します。
ここでは、その基本構文と実例をわかりやすく解説します。


スポンサーリンク

1. フィルタで絞り込み → 結果を並び替える基本構文

基本の流れ

  1. AutoFilter で特定の条件を絞り込む
  2. 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 を忘れないのが安定稼働のポイント

コメント

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