ここでは Offset × 条件分岐 × Autofilter を組み合わせて「表から条件に合致するデータを抽出し、隣列や下段に出力する」黄金パターンをまとめます。Range.AutoFilter を活用することで、複雑な条件抽出を高速に処理できます。
基本パターン 10選
1. 特定値を抽出(商品カテゴリ=FRU)
Range("A1:D20").AutoFilter Field:=1, Criteria1:="FRU"
VB👉 商品カテゴリ列で「FRU」を抽出。
2. 数値条件抽出(売上100以上)
Range("A1:D20").AutoFilter Field:=2, Criteria1:=">=100"
VB👉 売上列で100以上を抽出。
3. 範囲条件抽出(売上100〜500)
Range("A1:D20").AutoFilter Field:=2, Criteria1:=">=100", Operator:=xlAnd, Criteria2:="<=500"
VB👉 売上列で100〜500の範囲を抽出。
4. 複数条件抽出(部署=営業 or 開発)
Range("A1:D20").AutoFilter Field:=3, Criteria1:="=営業", Operator:=xlOr, Criteria2:="=開発"
VB👉 部署列で「営業」「開発」を抽出。
5. 空白セル抽出
Range("A1:D20").AutoFilter Field:=4, Criteria1:="="
VB👉 指定列で空白セルを抽出。
6. 非空白セル抽出
Range("A1:D20").AutoFilter Field:=4, Criteria1:="<>"
VB👉 指定列で非空白セルを抽出。
7. 部分一致抽出(顧客名に「山田」を含む)
Range("A1:D20").AutoFilter Field:=1, Criteria1:="=*山田*"
VB👉 顧客名列で「山田」を含むセルを抽出。
8. 日付条件抽出(2025年11月以降)
Range("A1:D20").AutoFilter Field:=2, Criteria1:=">=2025/11/01"
VB👉 日付列で2025年11月以降を抽出。
9. エラー値抽出(#N/A)
Range("A1:D20").AutoFilter Field:=3, Criteria1:="#N/A"
VB👉 指定列でエラー値を抽出。
10. 抽出結果を隣列へコピー
Dim rng As Range
Range("A1:D20").AutoFilter Field:=2, Criteria1:=">=100"
Set rng = Range("A2:D20").SpecialCells(xlCellTypeVisible)
rng.Offset(0, 5).Value = rng.Value
VB👉 抽出結果を右隣ブロックへコピー。
✅ まとめ
- Offset → 抽出結果を隣列や下段へ展開
- 条件分岐 → 数値判定・文字列判定・日付判定・空白判定などを組み合わせ
- AutoFilter → 高速に抽出処理を実現、複数条件や範囲条件も可能
- 黄金パターン → カテゴリ抽出・範囲抽出・複数条件・空白/非空白・部分一致・日付条件など
💡 この「データ抽出 × Offset × 条件分岐 × Autofilter」パターン集を使えば、売上表・勤怠表・在庫表などの 条件抽出・分析 を一瞬で自動化できます。


