サイトについて      連絡先   検索

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

次のように値が入力されています。

1

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 個以上の文字*ABAB, 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)
  • 目次
    • セルを複数条件で検索する