Excel VBAで文字列を比較する

VBAで文字列を比較する方法を紹介します。

比較演算子 = と <>

文字列を単純に比較するには、比較演算子= 、<>を使用します。=は「等しい」(完全一致)、<>は「等しくない」です。このとき、大文字/小文字は区別されます。

下記に例を示します。左辺の"EXCEL VBA"のスペースは一つとします。

"EXCEL VBA" = "EXCEL VBA"  →成立

"EXCEL VBA" = "Excel VBA"  →不成立(小文字があるので等しくない)

"EXCEL VBA" = "EXCEL   VBA" →不成立(右辺にはスペースが3つある)

<>の場合は成立/不成立が上記の逆となります。

StrComp関数

StrComp関数は、文字列比較をして、結果を数値で返します。構文は下記です。

'(1)vbBinaryCompare(規定値)で比較
Debug.Print StrComp("EXCEL VBA", "Excel VBA")
'(2)vbTextCompareで比較(2)
Debug.Print StrComp("EXCEL VBA", "Excel VBA", vbTextCompare)

[実行結果]文字列比較2

(1)では等しくないと判断されていたものが、(2)では、大文字/小文字の区別をせずに比較したため一致(0)と判断されています。大文字/小文字の区別をせずに比較したい時は、StrComp関数が適しています。

Like演算子

上記2つの方法が「一致するか、しないか」を調べるのに対し、Like演算子は、「含むか、含まないか」といったより柔軟な比較ができます。構文は下記です。

    'A列には、各都道府県名が記入されているものとします。
    If Cells(i, 1).Value Like myStr Then
        Debug.Print Cells(i, 1).Value
    End If
変数myStr 出力される県名 補足
"?[広島]" 福島 広島 徳島 ?  +「広 or 島」
"[!福]*島" 広島 徳島 鹿児島 「福」以外 + * +「島」
"?[神奈川]" 石川 香川

? + 「神 or 奈 or 川」 

※2文字なので神奈川はFalse

"[神奈川]*" 神奈川 奈良 「神 or 奈 or 川」+ *