ExcelマクロVBA入門
第49回.Like演算子とワイルドカード

Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説
最終更新日:2018-01-24

第49回.Like演算子とワイルドカード


文字列比較において、部分一致の比較時に使うのが、Like演算子です。


Like演算子は、ワイルドカードを使って2つの文字列の比較を行います。



Like演算子

result = string Like pattern

result 必ず指定します。任意の数値変数を指定します。
string 必ず指定します。任意の文字列式を指定します。
pattern 必ず指定します。「解説」に示すパターン マッチング規則に従った任意の文字列式を指定します。

文字列式 string と文字列式 pattern が一致していると、演算結果 result は真 (True) になり、

一致していないと、演算結果 result は偽 (False) になります。

通常は、Ifステートメントで使います。

If string Like pattern Then
  真(True)の場合の処理
End If

文字列比較のための便利な機能を利用できます。

ワイルドカード、文字リスト、文字範囲などを組み合わせて使用できます。



ワイルドカード

文字パターン 引数 string の中の一致する文字
? 任意の 1 文字
* 任意の数の文字
#

任意の 1 文字の数字 (0-9)

1バイト (半角) の数字だけが一致します

[charlist] 文字リスト charlist に指定した文字の中の任意の 1 文字
[!charlist] 文字リスト charlist に指定した文字以外の任意の 1 文字

"#" を除くすべての文字パターンでは、2 バイト文字 (全角文字) も 1 文字と数えて文字列比較を行います。

"#" には、1 バイト (半角) の数字だけが一致します。

特殊文字の左角かっこ ([)、疑問符 (?)、数値記号 (#)、およびアスタリスク (*)を文字列比較するには、
これらの文字を角かっこで囲みます。



使用例

"aBBBa" Like "a*a" ・・・ True
"F" Like "[A-Z]" ・・・ True
"F" Like "[!A-Z]" ・・・ False
"a22a" Like "a##a" ・・・ True
"a2a" Like "a##a" ・・・ False
"BAT123khg" Like "B?T*" ・・・ True
"CAT123khg" Like "B?T*" ・・・ False



正規表現について

一般に言われる、正規表現は使用できません。

マクロで正規表現を扱う為には、VBScriptを使う事になります。

VBAで正規表現を利用する(RegExp)



正規表現を使っているVBAをよく見かけますが、
Like演算子と文字列関数を組み合わせれば、どんな処理でも実現可能です。
正規表現を使うことを考える前に、まずはLike演算子と文字列関数での処理を検討してみてください。




同じテーマ「マクロVBA入門」の記事

VBA関数(日付,DateAdd)
VBA関数(文字列操作,Replace,InStr,StrConv)
VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)
Like演算子とワイルドカード
総合練習問題6
Withステートメント
オブジェクト変数とSetステートメント
Workbookオブジェクト
Windowsオブジェクト
Worksheetオブジェクト
Rangeオブジェクト

新着記事NEW ・・・新着記事一覧を見る

Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)
クラスとCallByNameとポリモーフィズム(多態性)|VBA技術解説(4月6日)
VBAでのタイマー処理(SetTimer,OnTime)|VBA技術解説(4月3日)
クラスとイベントとマルチプロセス並列処理|VBA技術解説(4月2日)
エクセルの日付と時刻のまとめ|エクセル関数超技(3月6日)
Excelシートの複雑な計算式を解析するVBA|VBAサンプル集(2月18日)
VBAクラスの作り方:独自Rangeっぽいものを作ってみた|VBA技術解説(2月16日)
VBAクラスの作り方:列名のプロパティを自動作成する|VBA技術解説(2月14日)
VBAクラスの作り方:列名の入力支援と列移動対応|VBA技術解説(2月11日)
クラスを使って他ブックのイベントを補足する|VBA技術解説(2月6日)

アクセスランキング ・・・ ランキング一覧を見る

1.ひらがな⇔カタカナの変換|エクセル基本操作
2.最終行の取得(End,Rows.Count)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.RangeとCellsの使い方|ExcelマクロVBA入門
6.変数とデータ型(Dim)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.繰り返し処理(For Next)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • Like演算子とワイルドカード

    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。






    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

    本文下部へ