StrComp関数:文字列と文字列を比較する
StrComp 関数は Excel VBA で用意されている関数の一つで、引数に指定した 2 つの文字列の大きさを比較し結果を返します。ここでは Excel VBA における StrComp 関数の使い方について解説します。
(Last modified: )
StrComp関数の定義と使い方
StrComp
関数は引数に指定した 2 つの文字列の大きさを比較し、結果を表す数値を返します。
1 番目の引数に指定した文字列と 2 番目の引数に指定した文字数の大きさを比較します。大きさの比較は文字コードの大きさで比較し、 文字列の 1 文字目を比較し同じだった場合は今度は 2 文字目を比較するといった形で比較を行います。
比較した結果として次のいずれかの値を戻り値として返します。
-1 : string1 < string2 0 : string1 = string2 1 : string1 > string2 Null: string1 または string2 が Null である
文字列1と文字列2が等しい場合は 0 、文字列1が文字列2 より小さければ -1 、大きければ 1 、どちらかが Null の場合は Null が返されます。
次の例を見てください。
Debug.Print StrComp("abc", "ABC") '1 Debug.Print StrComp("abc", "ace") '-1 Debug.Print StrComp("abc", "abc") '0
StrComp
関数を使って 2 つの文字列を比較しています。 1 つ目は最初の文字が異なっているので "a" と "A" の文字コードを比較します。 "a" の文字コードは 97 で "A" の文字コードは 65 のため結果は 1 となります。 2 つ目は最初の文字が同じなので 2 つ目の文字の "b" と "c" の文字コードを比較します。 "b" の文字コードは 98 で "c" の文字コードは 99 なので結果は -1 となります。 3 つ目はすべての文字が等しいので結果は 0 となります。
文字列を比較するときの種類を指定する
文字列の比較するときの比較方法の種類を指定する場合は、省略可能な 3 番目の引数に値を指定します。指定可能な値は次の通りです
定数 | 値 | 説明 |
---|---|---|
vbUseCompareOption | -1 | Option Compareステートメントの設定を使用して比較を実行します |
vbBinaryCompare | 0 | バイナリ比較を実行します |
vbTextCompare | 1 | テキスト比較を実行します |
vbDatabaseCompare | 2 | Microsoft Access のみ。 データベース内の情報に基づいて比較を実行します |
デフォルトの値は vbBinaryCompare
です。なお vbUseCompareOption
を指定するとエラーが表示されました。 vbTextCompare
を設定すると、大文字と小文字や全角文字と半角文字が異なっていても同じ文字として判定されます。
次の例を見てください。
Debug.Print StrComp("abc", "ABC") '1 Debug.Print StrComp("abc", "ABC", vbTextCompare) '0
一つ目は比較方法を指定していないので vbBinaryCompare
が指定されたものとみなされます。この場合は大文字と小文字を区別するので結果は 1 です。二つ目は比較方法として vbTextCompare
を指定しているので大文字と小文字は区別しません。そのため二つの文字列は同じ文字列とみなされるので結果は 0 となります。
それでは簡単なサンプルを作成して試してみます。
Option Explicit Sub StrComp関数() Dim i As Integer For i = 3 To 6 Cells(i, 4).Value = StrComp(Cells(i, 2).Value, Cells(i, 3).Value) Cells(i, 5).Value = StrComp(Cells(i, 2).Value, Cells(i, 3).Value, vbTextCompare) Next i End Sub
このプログラムを実行すると StrComp
関数を使って B 列の文字列と C 列の文字列を比較します。 D 列はデフォルトの vbBinaryCompare
で比較した場合、 E 列は vbTextCompare
を指定して比較した場合の結果を表示しています。 vbTextCompare
を指定した場合はひらがなとカタカナの区別も行いません。
"東京都港区" と "東京都渋谷区" の結果が vbBinaryCompare
の場合と vbTextCompare
の場合で反対になる理由は分かりませんでした。
-- --
Excel VBA における StrComp 関数の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。