
エクセルバージョン
マイクロソフト365
regexpオブジェクトはVBスクリプトのオブジェクトですが、VBAでもCreateObjectを使うか、参照設定(Microsoft VBScript Regular Expressions)することで使用可能になります。
非常に強力な検索ができますので。ぜひこの機会にマスターしちゃいましょう!
Menu
パターンの種類
| abc | |
| 解説 | abcを含む |
| 結果 | ![]() |
| ^ → (例)^https | |
| 解説 | 文字列の先頭が一致 |
| 結果 | ![]() |
| $(ドルマーク) → (例)_$ | |
| 解説 | 末尾の文字が一致 |
| 結果 | 使用例:正規表現(RegExp)で置換 |
| .(ドット) → (例)c.t | |
| 解説 | .ドットが任意の一文字(改行は除く) |
| 結果 | ![]() |
| ? → (例)https?:// | |
| 解説 | 直前のパターンが0回または1回現れる。 |
| 結果 | ![]() |
| + → (例)https+:// | |
| 解説 | 直前のパターン1回以上の繰り返し。 |
| 結果 | ![]() |
| * → (例)https*:// | |
| 解説 | 直前のパターン0回以上の繰り返し。 |
| 結果 | ![]() |
| [ ] → (例)[abc] | |
| 解説 | [ ]の中の文字が1文字でも合致。 |
| 結果 | ![]() |
| | → (例)a|b|c | |
| 解説 | |で区切られた文字が1文字でも合致。 |
| 結果 | ![]() |
| [ – ] → (例)[a-z] | |
| 解説 | 小文字のa~zが合致。 |
| 結果 | ![]() |
| [^ – ] → (例)[^a-z] | |
| 解説 | 小文字のa~z以外 |
| 結果 | ![]() |
| その他 → (例)田(中|口) | |
| 解説 | 田中、田口が含まれてたら |
| 結果 | ![]() |
省略形
| \w | [a-zA-Z_0-9]と等価 |
| \W | [^a-zA-Z_0-9]と等価 |
| \d | [0-9]と等価(数字) |
| \D | [^0-9]と等価(数字ではない) |
| \s | 任意のスペース文字にマッチ |
| \S | 任意の非スペース文字にマッチ |
RegExpのメソッドとプロパティ
| メソッド/プロパティ | 内容 | 詳細 |
| Pattern | パターン | 検索パターン設定 |
| IgnoreCase | 大文字/小文字 | 大文字と小文字を区別しない(True) |
| Global | 検索指定 | 文字列全体を検索(True) |
| Test | 一致/不一致 | パターンの一致(True) |
| Replace | 置換 | object.Replace(文字1,文字2)→文字2が表示 |
| Execute | オブジェクト取得 | object.Execute(文字) |
MatchオブジェクトとMatchesコレクション
Matchオブジェクト
| プロパティ | 詳細 |
| FirstIndex | 最初にマッチした位置を取得 |
| Length | マッチした文字数を取得 |
| Value | マッチした文字列を取得 |
Matchesコレクション
| プロパティ | 詳細 |
| Count | Matchオブジェクトの個数取得 |
| Item | Itemプロパティ取得 |
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 25 | Option Explicit Const OFFCOL As Integer = 1 Sub test() '参照設定 'Microsoft VBScript Regular Expressions Dim rExp As New RegExp Dim e As Range Range("B:B").ClearContents With rExp .Pattern = "^abc" 'パターンを指定① .IgnoreCase = False '大文字と小文字を区別(初期False)② .Global = True '文字列全体を検索(初期値False)③ For Each e In Range(Cells(1, 1), Cells(10, 1)) 'A1~A10を検索 If .test(e.Value) Then 'Test一致でtrue,不一致false④ e.Offset(, OFFCOL) = "○" End If Next End With Set rExp = Nothing End Sub |
CreateObjectを使用する場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Option Explicit Sub test2() Dim rExp As Object Dim e, rng As Range Range("B:B").ClearContents Set rExp = CreateObject("VBScript.RegExp") Set rng = Range(Cells(1, 1), Cells(10, 1)) 'A1~A10を検索 With rExp .Pattern = "^abc" 'パターンを指定① .IgnoreCase = False '大文字と小文字を区別(初期False)② .Global = True '文字列全体を検索(初期値False)③ For Each e In rng If .test(e.Value) Then 'Test一致でtrue,不一致false④ e.Offset(, 1) = "○" End If Next End With Set rExp = Nothing End Sub |
試す場合
1 rExp.Pattern = ” “ ← ダブルクォーテーションの中にお好きなパターンを入力します。
2 A1~A10に検索したい文字をを入力します。
3 B列に結果として〇が表示されます。
関連記事
【エクセル関数】ワイルドカードとチルダで(~が含まれていたら)検索
【Excel VBA】メールの正規表現エラーチェック(RegExp)
【Excel VBA】Like演算子でパターンのサンプル例をご紹介!
