-
∨目次
- セルを複数条件で検索する
VBA セルを複数条件で検索する
はじめに
Excel VBA マクロのセルを複数条件で検索する方法を紹介します。
セルの範囲をループして複数条件で検索できます。
- セルを検索するには「セルを検索する」をご覧ください。
- セルを取得するには「セルや範囲を取得する」をご覧ください。
-
目次
- セルを複数条件で検索する
セルを複数条件で検索する
Range の引数にセル名を指定すると、セルの範囲を指定できます。
For Each に Range を指定すると範囲内の全てのセルを参照できます。
セル「A1」~「B2」を検索するにはFor Each c In Range("A1:B2")のように入力します。
Dim c As Range
For Each c In Range("A1:B2")
Debug.Print(c.Address)
' $A$1
' $B$1
' $A$2
' $B$2
Next
次のように値が入力されています。

B 列がABCで、C 列があいうの A 列の値を取得するには次のようにします。
Dim c As Range
For Each c In Range("B1:B4")
' 第一条件
If c.Value <> "ABC" Then
GoTo Continue
End If
' 第二条件
If c.Offset(0, 1).Value <> "あいう" Then ' Offset(0, 1) は 1 つ右のセル (C 列のセル) を取得している
GoTo Continue
End If
Dim aValue As String
aValue = c.Offset(0, -1).Value ' A 列の値を取得
Debug.Print(aValue)
Continue:
Next
このように列でループして If 文で条件を追加すれば、複数条件で検索ができます。
Offset は指定のセルから移動した位置のセルを取得できます。
セルや範囲を取得する方法は「セルや範囲を取得する」で紹介しています。
セルに指定した文字が含まれているかどうかは「InStr 関数」を使用します。
Like 演算子を使ってワイルドカードで判定できます。
パターン | 説明 | 使用例 | 一致例 |
? | 任意の 1 文字 | あい? | あいう, あいか, あいも |
* | 0 個以上の文字 | *AB | AB, 0AB, 10AB |
# | 任意の 1 桁 (0–9) | ## | 10, 22, 59 |
[charlist] | charlist に含まれる任意の 1 文字 | [A-C] [A, H, L]? | A, B, C A1, H2, L3 |
[!charlist] | charlist に含まれない任意の 1 文字 | [!A-C] [!A, B, C]? | D, E, F |
Dim b As Boolean
b = "あいうえお" Like "う*" ' "う" で始まるか
b = "あいうえお" Like "?い" ' "い" の前に一文字あるか
b = 12 Like "##" ' 2 桁の数字か
b = "AZZ" Like "[A-C]*" ' A ~ C の文字で始まるか
b = "AZZ" Like "[!A-C]*" ' A ~ C 以外の文字で始まるか
Debug.Print(b)
スポンサーリンク