Excel VBA | データ検索(Offset × 条件分岐 × Match)の黄金パターン集

VBA
スポンサーリンク

ここでは Offset × 条件分岐 × Match を組み合わせて「セル範囲から特定の値を検索し、結果を隣列や下段に出力する」黄金パターンをまとめます。
WorksheetFunction.Match を活用することで、検索位置を高速に取得できます。


基本パターン 10選

1. 特定値の位置を検索

Dim pos As Variant
pos = WorksheetFunction.Match("山田", Range("A2:A20"), 0)
If Not IsError(pos) Then
    Range("A2:A20").Cells(pos, 1).Offset(0, 1).Value = "検出"
End If
VB

👉 「山田」を検索し、右隣に「検出」と出力。


2. 数値100の位置を検索

Dim pos As Variant
pos = WorksheetFunction.Match(100, Range("B2:B20"), 0)
If Not IsError(pos) Then
    Range("B2:B20").Cells(pos, 1).Offset(0, 1).Value = "100発見"
End If
VB

👉 値が100のセルを検索して右隣にラベル付け。


3. 空白セルを検索

Dim pos As Variant
pos = WorksheetFunction.Match("", Range("C2:C20"), 0)
If Not IsError(pos) Then
    Range("C2:C20").Cells(pos, 1).Offset(0, 1).Value = "空白"
End If
VB

👉 空白セルを検索して右隣に「空白」と出力。


4. 日付セルを検索

Dim pos As Variant
pos = WorksheetFunction.Match(DateSerial(2025, 11, 28), Range("D2:D20"), 0)
If Not IsError(pos) Then
    Range("D2:D20").Cells(pos, 1).Offset(0, 1).Value = "日付一致"
End If
VB

👉 特定日付を検索して右隣に「日付一致」と出力。


5. エラー値を検索

Dim pos As Variant
On Error Resume Next
pos = WorksheetFunction.Match(CVErr(xlErrNA), Range("E2:E20"), 0)
On Error GoTo 0
If Not IsError(pos) Then
    Range("E2:E20").Cells(pos, 1).Offset(0, 1).Value = "エラー検出"
End If
VB

👉 エラー値を検索して右隣に「エラー検出」と出力。


6. 部署名を検索して勤務時間を出力

Dim pos As Variant
pos = WorksheetFunction.Match("営業部", Range("F2:F20"), 0)
If Not IsError(pos) Then
    Range("F2:F20").Cells(pos, 1).Offset(0, 1).Value = Range("G2:G20").Cells(pos, 1).Value
End If
VB

👉 「営業部」を検索し、右隣に勤務時間を出力。


7. 商品コードを検索して在庫数を出力

Dim pos As Variant
pos = WorksheetFunction.Match("FRU-001", Range("H2:H20"), 0)
If Not IsError(pos) Then
    Range("H2:H20").Cells(pos, 1).Offset(0, 1).Value = Range("I2:I20").Cells(pos, 1).Value
End If
VB

👉 商品コードを検索し、右隣に在庫数を出力。


8. 顧客名を検索して購入回数を出力

Dim pos As Variant
pos = WorksheetFunction.Match("佐藤", Range("J2:J20"), 0)
If Not IsError(pos) Then
    Range("J2:J20").Cells(pos, 1).Offset(0, 1).Value = Range("K2:K20").Cells(pos, 1).Value
End If
VB

👉 顧客名を検索し、右隣に購入回数を出力。


9. 在庫ゼロの商品を検索

Dim pos As Variant
pos = WorksheetFunction.Match(0, Range("L2:L20"), 0)
If Not IsError(pos) Then
    Range("L2:L20").Cells(pos, 1).Offset(0, 1).Value = "在庫ゼロ"
End If
VB

👉 在庫ゼロの商品を検索して右隣にラベル付け。


10. VIP顧客を検索して特別タグを付与

Dim pos As Variant
pos = WorksheetFunction.Match("VIP", Range("M2:M20"), 0)
If Not IsError(pos) Then
    Range("M2:M20").Cells(pos, 1).Offset(0, 1).Value = "特別顧客"
End If
VB

👉 「VIP」を検索して右隣に「特別顧客」と出力。


✅ まとめ

  • Offset → 検索結果を隣列へ出力
  • 条件分岐 → 数値・文字列・日付・エラー・特定条件を判定
  • Match → 検索位置を高速取得し、結果を処理
  • 黄金パターン → 顧客検索・商品検索・部署検索・在庫ゼロ検出・VIP判定など

💡 この「データ検索 × Offset × 条件分岐 × Match」パターン集を使えば、売上表・勤怠表・在庫表などの 検索・抽出処理 を一瞬で自動化できます。

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