ここでは 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」パターン集を使えば、売上表・勤怠表・在庫表などの 検索・抽出処理 を一瞬で自動化できます。
