【VBA入門】Like演算子(ワイルドカード、エスケープ、否定)

あなたはLike演算子を使っていますか? 正規表現が使えない場合に、Like演算子で代替することができて便利です。

この記事では、Like演算子について基本的な使い方から、

  • ワイルドカードのエスケープ
  • Likeの否定(Not)
  • 複数条件を指定するには
  • 大文字小文字の区別なしで使用するには


など応用的な内容まで、Like演算子について使い方をわかりやすく解説します!

Like演算子とは

Like演算子は2つの文字列を比較するために使用します。Like演算子は以下のように記述して使います。

 

stringとpatternはString型の文字列です。stringがpatternに一致する場合resultはTrueになり、一致しない場合resultはFalseになります。

stringまたはpatternのどちらかがNullの場合、resultはNullになります。patternにはパターンマッチング規則に準拠する文字列を指定することができます。

ワイルドカード文字や文字のリスト、文字の範囲を組み合わせて正規表現に近いパターンマッチングを行うことができます。

Like演算子の使い方

Like演算子はresultにTrueもしくはFalseを格納するので、Ifステートメントと合わせてよく使われます。以下のような記述になります。

サンプルコードで確認しましょう。

実行結果:
Like01

このサンプルコードでは、まずFor Eachステートメントを使って配列arrの要素1つずつを抽出しています。それぞれの要素をLike演算子を使ってString型変数patternと一致するかマッチングを行い、マッチした場合はその要素を表示しています。

ちなみに変数pattern内で使われいる”[ ]”はワイルドカードで使用される文字で、ワイルドカードとそれに使われる文字については後ほど解説します。

ワイルドカードとは

ワイルドカードとは、あるパターンにマッチするように表現した文字列のことです。不特定の文字列があるパターンにマッチするか一括で判定する場合などに使われます。

ワイルドカードで使われる文字について表にまとめした。

文字説明
?任意の1文字
*0文字以上の文字
#0~9の半角数字
[charlist]charlistに含まれる全角または半角の1文字
[!charlist]charlistに含まれない全角または半角の1文字

ワイルドカードで使える文字は、正規表現で使える文字に比べて少ないので、正規表現に比べて表現できるパターンには制限があります。

それではサンプルコードで確認してみましょう。文字”!”を使ってcharlistに含まれない文字を出力表示します。

実行結果:
Like02

このサンプルコードでは、先ほどのサンプルコードの変数patternの値を”[!エンジニア]”としています。したがって、配列arrの要素から”エンジニア”のいずれの文字とも一致しない文字が出力表示されています。

ワイルドカードのエスケープ

ワイルドカードとそれに使用する文字について解説しました。ワイルドカードで使われている文字、例えば”?”や”!”などをLike演算子のpatternの中に使いたい場合、どうしたらよいのでしょうか?

“?”や”!”などのワイルドカードで使われる文字をLike演算子のpattern中で使えるように記述することをワイルドカードのエスケープと呼びます。ワイルドカードで使われる文字は”[ ]”で囲むことでエスケープすることができます。

サンプルコードで確認しましょう。

実行結果:
Like03

このサンプルコードでは、Like演算子を使ってString型変数patternと一致するかマッチングを行っています。変数patternにはワイルドカードで使用する文字”!”を”[ ]”で囲って使用しています。

変数strには文字”!”が含まれますので、結果が出力表示されています。

Likeの否定(Not)

IfステートメントでLikeを否定する記述は下記のとおりになります。

サンプルコードで確認しましょう。

実行結果:
Like02

複数条件を指定するには

複数条件を指定するには論理演算子「And」や「Or」を使用します。サンプルコードで確認しましょう。

実行結果:
Like04

大文字小文字の区別なしで使用するには

Like演算子は大文字小文字を区別してパターンマッチングの判定を行います。これに対し、大文字小文字の区別なしでLike演算子の判定を行うには2つの方法があります。

1つ目は、Option Compare Textで指定する方法です。2つ目は、比較する2つの文字列を「どちらも大文字」もしくは「どちらも小文字」に変換してから比較する方法です。

それぞれくわしくみていきましょう。

Option Compare Textで指定する方法

Option CompareステートメントをTextで指定すると、文字列比較は大文字と小文字を区別しなくなります。サンプルコードで確認しましょう。

実行結果:
Like05

大文字もしくは小文字に変換する方法

文字列を大文字に変換するにはUCase関数を、小文字に変換するにはLCase関数を使用します。比較する文字列をどちらも大文字に変換してLike演算子で判定してみましょう。

実行結果:
Like05

文字列の操作総まとめ

この記事では紹介しきれなかった文字列の様々操作についてはこちらの記事で解説しているので、ぜひ確認してみてください!

まとめ

ここでは、Like演算子の使い方について説明しました。Like演算子はワイルドカードを使ってパターンマッチングができます。

正規表現が使えない場合などは、Like演算子とワイルドカードで代替することができて便利です。使いこなすことができるように、この記事を何度も参考にして下さいね!

Excel VBAを最短で習得したい方へ

元々ITリテラシーの高い方やプログラムの学び方がわかっている方であれば、この記事通りに進めていけば、Excel VBAを独学で習得することができるでしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「なかなかやり遂げられ無い、挫折してしまった」
「時間が足りない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決することができない」

このような悩みを抱えている方も少なく無いと思います。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、より深くExcel VBAについて学習することできます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方やカリキュラムを考えてみませんか?

Excel VBAならではの学習方法や、現役エンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta2_vba2

LINEで送る
Pocket

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説