Excelでデータ分析を行うとき、並び替えとフィルタを組み合わせて実行することはよくあります。
例えば、売上データを「日付順」に並び替えつつ「特定の商品だけ抽出する」など、複数の操作をまとめてマクロ化しておくと、日常業務の効率が大幅にアップします。
本記事では、並び替えとフィルタを一括で処理するマクロの基本構成を紹介し、実用的なサンプルコードを解説します。
1. 並び替えとフィルタを一括処理する流れ
マクロ構成の考え方は以下の通りです。
- 対象のテーブル(ListObject)を取得
- 並び替え条件を設定し適用
- フィルタ条件を設定し適用
- 必要に応じて処理後の表示を確認
2. サンプルシナリオ
次のようなテーブル「Table1」があるとします。
| 担当者 | 商品 | 数量 | 日付 |
|---|---|---|---|
| 佐藤 | 商品A | 10 | 2025/10/01 |
| 鈴木 | 商品B | 50 | 2025/10/02 |
| 田中 | 商品A | 20 | 2025/10/03 |
| 佐藤 | 商品B | 30 | 2025/10/04 |
ここで実現したい処理は:
- 日付を昇順に並び替え
- 商品列で「商品A」のみを抽出
3. 並び替え+フィルタを一括処理するコード
Sub テーブル並び替えとフィルタ一括()
Dim ws As Worksheet
Dim lo As ListObject
'Sheet1のテーブル「Table1」を取得
Set ws = ThisWorkbook.Sheets("Sheet1")
Set lo = ws.ListObjects("Table1")
'並び替え条件をクリア
lo.Sort.SortFields.Clear
'日付列を昇順に並び替え
lo.Sort.SortFields.Add _
Key:=lo.ListColumns("日付").Range, _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
With lo.Sort
.Header = xlYes 'ヘッダー行あり
.Apply
End With
'商品列で「商品A」を抽出
lo.Range.AutoFilter _
Field:=lo.ListColumns("商品").Index, _
Criteria1:="商品A"
End Sub
4. コード解説
lo.Sort.SortFields.Clear
並び替え条件をリセット。必ず最初に実行するのが安全。SortFields.Add
日付列を昇順に設定。複数条件を指定することも可能。lo.Range.AutoFilter
並び替え後にフィルタを適用。列名で指定することで保守性を高めている。
5. 応用例:複数条件の並び替え+フィルタ
例えば次のように「担当者を昇順 → 数量を降順」で並び替え、その上で「商品B」だけを抽出することも可能です。
Sub テーブル並び替えとフィルタ応用()
Dim ws As Worksheet
Dim lo As ListObject
Set ws = ThisWorkbook.Sheets("Sheet1")
Set lo = ws.ListObjects("Table1")
'並び替え条件をクリア
lo.Sort.SortFields.Clear
'第1条件:担当者を昇順
lo.Sort.SortFields.Add _
Key:=lo.ListColumns("担当者").Range, _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
'第2条件:数量を降順
lo.Sort.SortFields.Add _
Key:=lo.ListColumns("数量").Range, _
SortOn:=xlSortOnValues, _
Order:=xlDescending, _
DataOption:=xlSortNormal
With lo.Sort
.Header = xlYes
.Apply
End With
'商品列で「商品B」を抽出
lo.Range.AutoFilter _
Field:=lo.ListColumns("商品").Index, _
Criteria1:="商品B"
End Sub
6. まとめ
- 並び替えとフィルタは 一つのマクロでまとめて処理可能
- 並び替えは
SortFields.Addを使って複数条件を設定できる - フィルタは
lo.Range.AutoFilterを組み合わせて実現 - 列名で指定すると列の順番が変わってもエラーになりにくく保守性が高い
並び替えとフィルタを組み合わせることで、必要なデータを効率的に抽出でき、日常業務のスピードが大きく向上します。
コメント