【VBA】「あれ?文字が一致しない…」Excelの大文字・小文字問題を解決するStrComp関数の活用術

【業務効率化】VBA
スポンサーリンク

こんにちは、ぐーです!

「Excel上では『Apple』も『apple』も同じリンゴなのに、VBAで処理しようとすると別物として扱われてしまう……。」

毎日大量のデータを処理していると、一度はこのような経験をされたことがあるのではないでしょうか?

人間なら「同じもの」と直感的に判断できることでも、コンピュータの世界では「A」と「a」は全く異なるデータとして厳密に区別されます。

今回は、そうした「表記のゆれ」を柔軟に吸収して比較してくれる便利な関数、StrComp関数をご紹介します。この関数をマスターするだけで、データ照合や比較作業に伴うストレスが大幅に軽減されるはずです。

【業務効率化】VBAの記事を見る

なぜ「=」による比較では不十分なのでしょうか?

通常、VBAで文字列を比較する際は「=」演算子を使用します。

If "Apple" = "apple" Then
    MsgBox "同じです"
Else
    MsgBox "違います"
End If

これを実行すると、「違います」と表示されます。

VBAの標準的なルール(バイナリ比較)では、大文字と小文字は「異なる文字」として識別されるためです。

しかし、実務においては「入力のばらつきに関わらず、同じ単語として扱いたい」というケースがほとんどではないでしょうか。そこで非常に役立つのが、StrComp関数です。

StrComp関数の記述方法

書き方はとてもシンプルです。

StrComp(文字列1, 文字列2, [比較モード])

この「比較モード」の設定によって、判定の厳格さをコントロールできるのが最大の特徴です。

  • vbBinaryCompare(0):バイナリ比較。大文字・小文字を厳密に区別します(Aとaは別物)。
  • vbTextCompare(1):テキスト比較。大文字・小文字、さらに半角・全角の差も無視して「同じ文字」として判定します。

【実践】コピペで使える比較コード

実際に「大文字・小文字」や「半角・全角」の違いを無視して比較するコードを確認してみましょう。

Sub CheckString()
    Dim text1 As String
    Dim text2 As String
    Dim result As Integer
   
    ' 例:全角のAppleと半角のappleを比較
    text1 = "Apple"
    text2 = "apple"
   
    ' vbTextCompareを使います
    ' 戻り値が0なら「一致」という意味です
    result = StrComp(text1, text2, vbTextCompare)
   
    If result = 0 Then
        MsgBox "OK!同じ文字として扱います!"
    Else
        MsgBox "NG!違う文字です!"
    End If
End Sub

これを実行すると、表記が異なっていても「OK!同じ文字として扱います!」と表示されます。

私が初めてこの関数を知った時、ようやくこちらの意図が伝わったような気がして、とても安心したのを覚えています。

戻り値が持つ意味

StrComp関数は、比較結果を以下の数値で返します。

  • 0: 一致した
  • -1:文字列1が文字列2より小さい(辞書順で前)
  • 1:文字列1が文字列2より大きい(辞書順で後)

基本的には「戻り値が0(一致)であるか」という点だけ押さえておけば、実務の大部分において困ることはありません。

まとめ:柔軟な比較で業務をスムーズに

これまで、比較のためにわざわざUCase関数などで文字種をすべて大文字に変換してから照合していた方も多いかもしれません。
今後は StrComp(…, vbTextCompare) を活用することで、よりスマートかつ安全に処理を完結させることが可能です。

機械的な厳密さだけでなく、人間の感覚に合った「柔軟なチェック」を自動化できれば、作成するツールの汎用性と業務の品質はさらに向上します。

ぜひ、今日からの開発に取り入れてみてください!

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました