【VBAリファレンス|実務向け】第5回 置換機能でできない文字の置き換え 2/4:正規表現で「パターン」を捉える

スポンサーリンク

皆さん、こんにちは。VBA講師の佐藤です。前回の記事では、Excel標準の「置換機能」が苦手とする領域、つまり「条件に応じた柔軟な置換」についてお話ししました。今回はその解決策として、VBAにおける最強の武器「正規表現(Regular Expressions)」の活用法について解説します。

なぜ置換機能では力不足なのか

標準の置換機能は「特定の文字列を別の文字列に置き換える」ことには長けていますが、「数字が3つ並んだら削除する」「カッコ内の文字だけを抽出する」といった、パターンの抽出はできません。ここで登場するのが、VBScriptの正規表現エンジンです。

正規表現を導入するための準備

VBAで正規表現を使うには、VBEのツールメニューから「参照設定」を開き、「Microsoft VBScript Regular Expressions 5.5」にチェックを入れるのが定石です。これを設定することで、コード内で「RegExp」オブジェクトが利用可能になります。

具体的な事例:電話番号からハイフンを除去する

例えば、名簿データに「090-1234-5678」と「03 1234 5678」のような表記揺れが混在しているとします。これを「数字のみ」に統一したい場合、置換機能だとハイフンやスペースを個別に処理せねばなりません。しかし、正規表現なら以下のような記述で一発です。

Set reg = New RegExp
reg.Pattern = “[^0-9]”
reg.Global = True
result = reg.Replace(targetString, “”)

この「[^0-9]」というパターンは、「数字(0-9)以外」を全て指定するという意味です。これを使えば、ハイフンだろうがスペースだろうが、数字以外のゴミを一掃できます。

実務での最大のメリット

この手法の素晴らしい点は、「データの形式が多少崩れていても、ルールさえ共通していれば一括でクレンジングできる」という点です。例えば、アンケートの自由記述欄から「特定のキーワードを含む一文だけを抽出する」といった作業も、正規表現のパターンを工夫するだけで数秒で終わります。

次回は、この正規表現をさらに応用して、複雑な文字列から「必要な情報だけをピンポイントで切り出す」テクニックについて深掘りしていきます。単なる置き換えを超えた、データ抽出の極意をお伝えしますので、ぜひ楽しみにしていてください。

タイトルとURLをコピーしました