エクセルバージョン
マイクロソフト365
今回は~が含まれていたら検索ができるLike演算子について解説していきたいと思います。
正規表現もそうですがこのlike演算子もパワフルな検索が可能です。
すぐ忘れるので一覧にしてみました(((^-^)))
それではいってみましょう!
基本
構文
検索したい文字 Like パターン
結果として下記を取得できます。
True/False/Null
Like演算子を使用する目的
If判定の際にTrue(ありましたよ~)とFalse(ありませんでした!)を判別する際に使用します。
ウオッチで値を確認
例えば分かりやすいように下記を例にすると
*yahoo*
のように*印(ワイルドカード)でyahooを囲ってあげると「yahooが含まれていたら」という検索ができるようになります。
ですのでメールアドレスがyahooの人だけ何か処理を実行したい時などに使用できるわけです。
それではウォッチウィンドウを表示させて値を確認してみます。
Trueの場合
メールアドレスにyahooが含まれているので(True)
Falseの場合
メールアドレスにyahooが含まれていないので(False)
このようにIFで条件分岐させてTrue(含まれてた時)とFalse(含まれない時)の結果によって処理を分けます。
ということで今やった~が含まれていたら検索は1例のパターンなので、下記のサンプルで色々なパターンを一覧にしたので是非この機会にパワフルな検索を覚えちゃいましょう(*^^)v
パターンサンプル
? | ?のサンプル |
c?t | 前後が一致して中が任意の1文字 |
??? | 任意の3桁 |
* | *のサンプル |
c*t | 前後が一致 |
*abc* | abcが含まれていたら参考記事:Webスクレイピング |
*[abc]* | aかbかcが含まれていたら |
ab* | 先頭が一致 |
*cd | 末尾が一致
|
# | #のサンプル |
# | 数字1桁 |
0#0 | 前後が一致して中が数字1文字 |
1##0 | 前後が一致して中の任意の数字2文字 |
###-####-#### | 携帯電話形式(ハイフンあり) |
[文字] | [文字]のサンプル |
[a-z] | a~zの1文字(小文字) |
[A-Z] | A~Zの1文字(大文字) |
[あ-お] | あ行の1文字 |
[ !文字] | [ !文字]のサンプル |
[!a-z] | a~z以外の1文字 |
[!A-Z] | A~Z以外の1文字 |
パターン
パターン | 内容 |
? | 任意の1文字。 |
* | 0 文字以上の文字。 |
# | 任意の1桁の数字 (0-9)。 |
[文字] | 任意の全角または半角の1文字。 |
[ !文字] | 文字に含まれない任意の全角または半角の1文字。 |
VBAサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Sub sample() '変数 Dim rowEnd As Long Dim e, rng As Range Dim Pattern As String '判定行を消去 Range("B:B").ClearContents 'データ範囲を設定(今回はA列) rowEnd = Cells(Rows.Count, 1).End(xlUp).row Set rng = Range(Cells(1, "A"), Cells(rowEnd, "A")) '検索パターンを記述(小文字abcが含まれていたら) Pattern = "*abc*" 'パターン検索する(B列に判定結果) For Each e In rng If e Like Pattern Then e.Offset(, 1) = "〇" End If Next End Sub |
A列の値をforEachでループ処理をしながら検索して結果がTRUEならB列に〇が表示されます。
【結果】
実践したい場合は15行目のPattern = ” “ の中のパターンを変更すればいろいろ練習できるかと思いますので是非試してみてください(^^♪
まとめ
今回ご紹介したLike演算子のパターンもごくわずかなのでこの機会に他にも色々なパターン検索があるので試してみてください。
似たようなパターン検索で正規表現(RegExp)がエクセルVBAでも実行可能なので是非一読してみてください。
【Excel VBA】正規表現でいろいろなパターンを判別 RegExp
関数でワイルドカードを使用する場合
【エクセル関数】ワイルドカードとチルダで(~が含まれていたら)検索
以上です。