VBA入門
Like演算子とワイルドカード

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2021-09-11

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


文字列比較において部分一致やパターンマッチングでの文字列比較を行う時に使うのがLike演算子です。
Like演算子は、2つの文字列のパターンマッチングを行い、規則に一致しているかどうかの結果をTrue(一致)またはFalse(不一致)で返します。


パターンマッチングでは、
・ワイルドカード
・文字のリスト
・文字の範囲
これらを任意に組み合わせて作成したパターン文字列式を指定できます。


Like演算子

result=stringLikepattern

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

文字列式stringと文字列式patternが一致していると、演算結果resultは真(True)になり、
一致していないと、演算結果resultは偽(False)になります。
通常は、Ifステートメントで使います。

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

文字列比較のための便利なパターン文字列式を、
ワイルドカード、文字リスト、文字範囲などを組み合わせて指定できます。


パターン文字列式(ワイルドカード、文字リスト、文字範囲)

文字パターン 引数stringの中の一致する文字
? 任意の1文字
* 任意の数の文字
# 任意の1文字の数字(0-9) 1バイト(半角)の数字
半角全角どちらの数字にも一致します
[charlist] 文字リストcharlistに指定した文字の中の任意の1文字
[!charlist] 文字リストcharlistに指定した文字以外の任意の1文字

1文字とは
2バイト文字(全角文字)も1文字と数えて文字列比較を行います。

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

文字リスト
ハイフン (-) を使用して範囲の上限と下限を分離することで、charlistで文字の範囲を指定できます。
たとえば、
[A-Z]では、string内の対応する文字位置にAからZの範囲内の大文字が含まれる場合に一致します。


Like演算子の使用例

データ 文字列式 結果 説明
aBBBa a*a TRUE aで始まりaで終わる
F [A-Z] TRUE AからZまでの文字
F [!A-Z] FALSE AからZ以外の文字
a2a a#a TRUE a 数字1桁 a
aM5b a[L-P]#[!c-e] TRUE a LからP 数字1桁 cからe
BAT123khg B?T* TRUE B 任意1文字 T 何でも良い
CAT123khg B?T* FALSE B 任意1文字 T 何でも良い
ab a*b TRUE a 何でも良い b
a*b a[*]b TRUE a *1文字 b
axxb a[*]b FALSE a *1文字 b
a[xyz a[[]* TRUE a [1文字 何でも良い

上記の表をA1セルに貼り付けて以下のマクロVBAを実行して確認してください。。

Sub sample()
  Dim i As Long
  For i = 2 To 12
    Cells(i, 3) = Cells(i, 1) Like Cells(i, 2)
  Next
End Sub


正規表現について

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

マクロVBAで正規表現を扱う為には、VBScriptを使う事になります。
VBAで正規表現を利用する(RegExp)
・VBScript 廃止に向けて、VBA プロジェクトを対応させる方法 ・メタ文字 ・正規表現 ・正規表現RegExpの使い方 ・RegExpオブジェクト ・RegExpの使用例 ・RegExp関連のオブジェクト ・Execute(Matches,Match,SubMatches)の使用例 ・Replaceの使用例 ・先読み:肯定先読み、否定先読み ・正規表現の実践例

正規表現を使っているVBAをよく見かけますが、
Like演算子と文字列関数を組み合わせれば、どんな処理でも実現可能です。
正規表現を使うことを決して否定するわけではありませし、正規表現がとても便利かつ強力な機能であることは間違いありません。

しかし、まずはVBA標準の機能で、実現したいことができないかを考えることはとても大切なことです。
正規表現を使うことを考える前に、まずはLike演算子と文字列関数での処理を検討してみてください。




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

第46回.VBA関数(日付,DateAdd)
第47回.VBA関数(文字列操作,Replace,InStr,StrConv)
第48回.VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)
第49回.Like演算子とワイルドカード
第50回.総合練習問題6
第87回.WorksheetFunction(ワークシート関数を使う)
第51回.Withステートメント
第52回.オブジェクト変数とSetステートメント
第53回.Workbookオブジェクト
第54回.Windowsオブジェクト
第55回.Worksheetオブジェクト


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

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




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


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



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