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 ・・・新着記事一覧を見る

IfステートメントとIIF関数とMax関数の速度比較|VBA技術解説(6月23日)
Withステートメントの実行速度と注意点|VBA技術解説(6月6日)
VBA+SeleniumBasicで検索順位チェッカー(改)|VBA技術解説(6月2日)
マクロでShift_JIS文字コードか判定する|VBA技術解説(6月1日)
Shift_JISのテキストファイルをUTF-8に一括変換|VBAサンプル集(5月31日)
「VBAによる解析シリーズその2 カッコ」をやってみた|エクセル(5月21日)
VBA+SeleniumBasicで検索順位チェッカー作成|VBA技術解説(5月18日)
テーブル操作のVBAコード(ListObject)|VBA入門(5月12日)
テーブル操作の概要(ListObject)|VBA入門(5月12日)
VBAのスクレイピングを簡単楽にしてくれるSelenium|VBA技術解説(5月6日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.ひらがな⇔カタカナの変換|エクセル基本操作
7.繰り返し処理(For Next)|ExcelマクロVBA入門
8.マクロって何?VBAって何?|ExcelマクロVBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄


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

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


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






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