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

長野 透
書いた人 長野 透

Like演算子って使っていますか?

正規表現が使えない場合に、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演算子とワイルドカードで代替することができて便利です。

使いこなすことができるように、この記事を何度も参考にして下さいね!

おすすめのコンテンツ

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

「何の言語から勉強すればいいかわからない・・・」そんなあなたに質問に答えていくだけで、何の言語を学べば良いのか診断いたします!未経験から6ヶ月でプログラミング習得に向けた学習プランが1分で分かる!

自分にプログラミングなんて・・・と思っていませんか?

今後10年間で今ある職業の『77%』はなくなると言われています。

人工知能や機械学習を筆頭にVR、AR、ドローンなどの最先端技術の発達はこれからのあなたの働き方に間違いなく影響を与えるでしょう。

将来を見据えてプログラミングができるようになってエンジニアになりたい、自分だけにしかできないクリエイティブな仕事がしたい、、、とお考えの方も少なくないでしょう。

と、同時に「難しそう、、自分にはできないだろう、、、」と諦めている方も多いのではないでしょうか。

弊社マンツーマンレッスンは、お一人お一人に専属のインストラクターがつくので、通常のスクールでは難しい、オリジナルアプリ開発や、フリーランスとしての仕事獲得まで支援しています。

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

詳しくは下の画像をクリックしてください。

cta_mtm2

非常識な結果を出す卒業生多数!

エンジニアキャリア戦略

人気記事セレクション

3000名以上来場の人気セミナーが開催決定

18歳で時給6000円だった侍エンジニア塾代表の木内より、『プログラミングで人生を変える』ための学習方法をお教えます。

0からプログラミングを習得し、フリーランスエンジニアになる方法プログラミング学習の効率を劇的に上げる学習メソッドを解説しますので、奮ってご参加ください。

  • 日付:3/30(日)
  • 時間:14:00〜17:00終了予定
  • 場所:当社 道玄坂オフィス
  • 住所:〒150-0043 東京都渋谷区道玄坂2丁目11-1 Gスクエア渋谷道玄坂 4F *Googleマップでは「東京都渋谷区道玄坂2丁目11-1」で検索してください。近隣にスクエア渋谷という別のビルがあるためご留意ください。
  • 参加費:無料
  • URL:https://seminar.sejuku.net/
詳しくは下の画像をクリックして弊社セミナー内容をご確認ください。

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

長野 透

長野 透

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