Excel VBAで文字列を比較する

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

比較演算子 = と <>

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

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

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

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

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

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

StrComp関数

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

第1,2引数には比較する文字列を入れます。第3引数は省略可で、規定値は「vbBinaryCompare」(大文字/小文字を区別する)です。ここで、「vbTextCompare」を指定すると大文字/小文字を区別せず比較します。戻り値は、等しい場合は「0」を返し、等しくない場合は文字コードによる大小比較をして「-1」または「1」を返します。

第3引数(比較モード)に注目しつつ、下記をご覧下さい。

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

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

Like演算子

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

戻り値[結果]はTrue(真)またはFalse(偽)です。[文字列]が(パターン)に一致するかどうかを調べます。(パターン)は下記を組み合わせた文字列を記述します。

?:任意の1文字 *:任意の文字(文字数関係なし、空値も含む) #:任意の数字(1文字)

[文字リスト] :[ ]内に指定した文字の中の任意の1文字。[ !文字リスト]とすると「含まない」になります。

(注意)文字リストは一文字ずつですのでご注意ください。"*[福岡]*"とした場合、「"福"または"岡"が含まれ、その前後は空値を含め何でも良い」という解釈になります。この場合、"福岡"だけでなく、"福島"、"福井"、"岡山"、"静岡"もTrueとなります。

パターン(=変数myStr)をいろいろ変えて、下記コードを実行した際の結果を表に示します。

変数myStr 出力される県名 補足
"?[広島]" 福島 広島 徳島 ?  +「広 or 島」
"[!福]*島" 広島 徳島 鹿児島 「福」以外 + * +「島」
"?[神奈川]" 石川 香川

? + 「神 or 奈 or 川」 

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

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

Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて

UX MILKのディレクター募集