ExcelのREGEXREPLACE関数の使い方|正規表現で文字列を置換する

スポンサーリンク

「電話番号のハイフンをまとめて消したい」「メールアドレスのドメイン部分だけを伏せ字にしたい」。データ整理をしていると、こういう一括置換の場面はよくありますよね。

これまでのExcelでは、SUBSTITUTE関数を何重にもネストしたり、マクロを書いたりするしかありませんでした。数式が長くなって、後から見直すのも一苦労ですよね。

そんな悩みを一発で解決してくれるのがREGEXREPLACE関数です。正規表現を使って、セルの文字列を柔軟に置換できます。

この記事では、ExcelのREGEXREPLACE関数の使い方を基本から実務例まで解説します。キャプチャグループを使った高度な置換や、SUBSTITUTE関数との使い分けもまとめましたので、ぜひ参考にしてください。

ExcelのREGEXREPLACE関数とは?

REGEXREPLACE関数は、セルの文字列のうち正規表現パターンに一致する部分を、別の文字列に置換するExcelの関数です。読み方は「レジェックスリプレイス」です。

2024年にMicrosoft 365へ追加された新しい関数で、REGEXTEST・REGEXEXTRACTと合わせて「正規表現3関数」と呼ばれています。

固定の文字列を置換するだけならSUBSTITUTE関数で十分ですが、「数字だけまとめて消したい」「特定パターンの部分を伏せ字にしたい」といったパターン指定が必要なケースで、REGEXREPLACE関数が真価を発揮しますよ。

どんなときに使う関数か

REGEXREPLACE関数は次のようなシーンで活躍します。

  • 電話番号・郵便番号からハイフンを一括で取り除きたいとき
  • メールアドレスや個人情報を伏せ字にマスキングしたいとき
  • 余分な空白・記号・改行をまとめて除去してデータクレンジングしたいとき
  • HTMLタグを取り除いて本文だけを取り出したいとき
  • 日付の区切り文字を一括変換したいとき

従来のSUBSTITUTEネストと比べると、数式がすっきりして読みやすくなりますよ。

利用条件(Microsoft 365が必須)

ExcelのREGEXREPLACE関数を使うには、Microsoft 365のサブスクリプションが必要です。Excel 2019やExcel 2021などの永続ライセンス版では使えません。

対応環境は次のとおりです。

  • Excel for Microsoft 365(Windows / Mac)
  • Excel for the web

お使いのバージョンが対応しているか、確認しておきましょう。バージョンが古いと #NAME? エラーになってしまいます。

REGEXREPLACE関数の構文と引数

基本構文

=REGEXREPLACE(テキスト, 正規表現パターン, 置換文字列, [出現位置], [大文字小文字の区別])

必須の引数は最初の3つで、後ろの2つは省略できます。

第1引数:テキスト

置換対象となる文字列またはセル参照を指定します。

=REGEXREPLACE("03-1234-5678", "-", "")
=REGEXREPLACE(A2, "-", "")

直接文字列を入れる場合はダブルクォーテーションで囲みます。実務ではセル参照を使うことがほとんどです。

第2引数:正規表現パターン

置換したい部分を表す正規表現をダブルクォーテーションで囲んで指定します。

=REGEXREPLACE(A2, "d", "*")

上の例は「A2の中の数字を1文字ずつアスタリスクに置き換える」という意味です。d は数字1文字を表す記号です。

第3引数:置換文字列

マッチした部分を何に置き換えるかを指定します。空文字列 "" を指定すれば「削除」と同じ意味になりますよ。

=REGEXREPLACE(A2, "s", "")

この例ではすべての空白文字を削除します。

第4引数:出現位置

何番目のマッチから置換するかを数値で指定します。省略すると0になり、すべてのマッチを置換します。

  • 0(省略時):すべてのマッチを置換
  • 1:1番目のマッチだけを置換
  • 2:2番目のマッチだけを置換
=REGEXREPLACE("a-b-c-d", "-", "/", 0)  '結果: a/b/c/d
=REGEXREPLACE("a-b-c-d", "-", "/", 2)  '結果: a-b/c-d

最初の1箇所だけ置換したい場面でも使える、意外と便利な引数ですよ。

第5引数:大文字小文字の区別

英字を含むパターンで大文字と小文字を区別するかを指定します。省略すると0(区別する)です。

  • 0(省略時):大文字と小文字を区別する
  • 1:大文字と小文字を区別しない
=REGEXREPLACE("ABC abc", "[a-z]", "*")     '結果: ABC ***
=REGEXREPLACE("ABC abc", "[a-z]", "*", , 1) '結果: *** ***

正規表現の基本パターン早見表

REGEXREPLACE関数で使える正規表現は、REGEXTEST・REGEXEXTRACTと同じPCRE2(Perl互換の正規表現)です。よく使う記号をまとめておきます。

記号意味
d数字1文字(0〜9)
D数字以外の1文字
w英数字またはアンダースコア
s空白文字(半角スペース・タブ・改行)
.任意の1文字
[abc]a・b・cのいずれか1文字
[a-z]a〜zのいずれか1文字
[^0-9]0〜9以外の1文字
^文字列の先頭
$文字列の末尾
*直前の0回以上の繰り返し
+直前の1回以上の繰り返し
{n}直前のn回の繰り返し
``または

TIP

特殊記号そのものを置換対象にしたいときは でエスケープします。たとえば「.」を消したいなら . と書きます。

置換文字列側では、後述する $1 $2 といった「キャプチャグループ参照」が使えます。これがREGEXREPLACE関数の真骨頂ですよ。

Excel REGEXREPLACE関数の基本的な使い方

それでは実際に数式を組み立ててみましょう。

電話番号からハイフンを除去する

もっとも使用頻度が高いパターンです。A列に入った電話番号から、ハイフンをまとめて削除します。

=REGEXREPLACE(A2, "-", "")
A列(入力値)B列(=REGEXREPLACEの結果)
03-1234-56780312345678
090-1234-567809012345678
06-1111-22220611112222

SUBSTITUTE関数でも同じことはできますが、REGEXREPLACEなら全角ハイフンや長音記号まで一度に消せる柔軟性が魅力です(後述)。

数字以外を一括削除する

電話番号欄に括弧や全角スペースなどが混じっていても、一発で数字だけにできます。

=REGEXREPLACE(A2, "D", "")

D は「数字以外の1文字」を表す記号です。「03-1234-5678(内線1)」のような入力でも、「0312345678 1」のように数字と元の配置を保ったまま、不要な記号をまとめて消せますよ。

余分な空白をまとめて削除する

セル内に混じった全角・半角スペース、タブ、改行をまとめて除去します。

=REGEXREPLACE(A2, "s+", "")

s+ は「1文字以上の連続した空白」を表します。貼り付けたデータに見えない空白が入っているときの掃除にぴったりですよ。

連続する空白を半角1つにまとめる

空白を完全に消すのではなく、連続分だけ1つに整えたい場合はこちらです。

=REGEXREPLACE(A2, "s+", " ")

「Hello World」→「Hello World」のように整形されます。コピペ由来のズレを直すのに便利ですよ。

実践的な使い方・応用例

メールアドレスのドメイン部分をマスキングする

個人情報保護のために、メールアドレスの @ より後ろを伏せ字にする例です。

=REGEXREPLACE(A2, "@.+$", "@***")
A列(入力値)B列(=REGEXREPLACEの結果)
taro@example.comtaro@***
hanako@biz-tactics.co.jphanako@***

@.+$ は「アットマーク+1文字以上の末尾まで」を意味します。会議資料やサンプルデータを作成するときに重宝しますよ。

HTMLタグを削除して本文だけ取り出す

Webから貼り付けた文字列からHTMLタグをまとめて除去する例です。

=REGEXREPLACE(A2, "<[^>]+>", "")

<[^>]+> は「< で始まり > 以外の文字が1つ以上続き > で閉じる部分」を表します。

こんにちは
世界

」→「こんにちは世界」のように、タグだけがきれいに消えます。

全角・半角・長音記号のハイフンをまとめて除去する

電話番号の表記揺れ対策です。半角ハイフン・全角ハイフン・マイナス・長音記号をまとめて削除します。

=REGEXREPLACE(A2, "[--−ー]", "")

角括弧の中に「消したい文字」を並べるだけでOKです。SUBSTITUTEでやろうとすると4重ネストが必要なところを、1つの数式で書けますよ。

日付の区切り文字を統一する

/ . - など複数の区切りが混在した日付を、ハイフン区切りに統一する例です。

=REGEXREPLACE(A2, "[/.-]", "-")
A列(入力値)B列(=REGEXREPLACEの結果)
2026/04/092026-04-09
2026.04.092026-04-09
2026-04-092026-04-09

角括弧内のハイフンは - とエスケープしておくと安全です。

キャプチャグループで並び順を入れ替える

REGEXREPLACE関数の真骨頂が、キャプチャグループを使った高度な置換です。丸括弧 () で囲んだ部分は「キャプチャグループ」となり、置換文字列側で $1 $2 として参照できます。

「姓 名」を「名 姓」に入れ替える例です。

=REGEXREPLACE(A2, "^(S+)s+(S+)$", "$2 $1")
A列(入力値)B列(=REGEXREPLACEの結果)
山田 太郎太郎 山田
Suzuki HanakoHanako Suzuki

(S+) は「空白以外の1文字以上」をキャプチャするパターンで、置換文字列の $2 $1 で順番を入れ替えています。慣れると応用が効くので、ぜひ覚えておきましょう。

日付のフォーマットを変換する

yyyy/mm/dd 形式の日付文字列を、dd-mm-yyyy 形式に並び替える例です。

=REGEXREPLACE(A2, "(d{4})/(d{2})/(d{2})", "$3-$2-$1")

「2026/04/09」→「09-04-2026」のように、年月日のパーツを順番入れ替えで出力できます。元データを壊さずに表示形式を変えたいときに便利ですよ。

REGEXREPLACEとSUBSTITUTE関数の使い分け

REGEXREPLACE関数とよく比較されるのがSUBSTITUTE関数です。どちらも「文字列置換」が目的ですが、得意分野が異なります。

関数置換対象向いているケース
SUBSTITUTE固定文字列「-」を「」に、など決まった文字の置換
REGEXREPLACE正規表現パターン「数字全般」「記号全般」などのパターン置換

使い分けの目安は次のとおりです。

  • 固定文字列の置換 → SUBSTITUTEが速くてシンプル
  • パターンに基づく置換 → REGEXREPLACEの独壇場
  • 複数の文字をまとめて消す → REGEXREPLACE([abc] 形式)
  • 並び順の入れ替え → REGEXREPLACEのキャプチャグループ

SUBSTITUTEは全バージョンのExcelで使えるのが強みです。共有ファイルで相手のバージョンが不明な場合は、SUBSTITUTEのネストで対応した方が安全な場面もありますよ。

よくあるエラーと対処法

REGEXREPLACE関数で表示されるエラーと対処法をまとめました。

#VALUE! エラー

原因: 第2引数に無効な正規表現を指定した。または第1引数に数値や日付などの非文字列を直接渡した。

対処法: 正規表現パターンを見直しましょう。特にカッコや特殊記号のエスケープ忘れに注意してください。数値セルを渡す場合はTEXT関数で文字列化してから渡します。

=REGEXREPLACE(TEXT(A2, "0"), "0", "*")

#NAME? エラー

原因: REGEXREPLACE関数に対応していないバージョンのExcelで使っている。または関数名のスペルミス。

対処法: Microsoft 365のサブスクリプションで最新版にアップデートしてください。Excel 2019・2021・LTSC 2024などでは使えません。関数名のスペルも確認しましょう。

置換結果が意図と違う

原因: 正規表現の「貪欲マッチ」が想定より広く一致している。たとえば <.+>

本文

全体にマッチしてしまいます。

対処法: .+?(最短マッチ)を使うか、[^>]+ のように文字クラスで範囲を限定します。

=REGEXREPLACE(A2, "<.+?>", "")
=REGEXREPLACE(A2, "<[^>]+>", "")
エラー原因対処法
#VALUE!無効な正規表現・非文字列パターン見直し・TEXTで変換
#NAME?非対応バージョンMicrosoft 365に更新
置換結果がおかしい貪欲マッチで広がりすぎ.+?[^>]+ を使う

エラーの原因はパターン記述ミスであることがほとんどです。落ち着いて数式を見直せば大丈夫ですよ。

REGEXTEST・REGEXEXTRACTとの使い分け

REGEXREPLACE関数には2つの姉妹関数があります。3つセットで覚えておくと、正規表現を使ったデータ処理が一気にラクになります。

関数戻り値用途
REGEXTESTTRUE / FALSEパターンに一致するかを判定する
REGEXEXTRACT一致した文字列パターンに一致する部分を抜き出す
REGEXREPLACE置換後の文字列パターンに一致する部分を別の文字列に置き換える

使い分けのイメージは次のとおりです。

  • 「メールアドレスとして正しいか?」→ REGEXTEST
  • 「本文からメールアドレスだけ抜き出したい」→ REGEXEXTRACT
  • 「メールアドレスのドメインを伏せ字にしたい」→ REGEXREPLACE

3つとも同じPCRE2の正規表現を使うので、パターンの書き方は共通です。REGEXTESTやREGEXEXTRACTで覚えた知識は、そのままREGEXREPLACEでも活きますよ。

姉妹記事として、ExcelのREGEXTEST関数の使い方ExcelのREGEXEXTRACT関数の使い方もぜひ参考にしてください。3関数をまとめて身につけると、データクレンジング作業がぐっと効率化されますよ。

まとめ

REGEXREPLACE関数は、Excelのセル上で正規表現を使った柔軟な文字列置換ができる関数です。

この記事のポイントを整理します。

  • 構文は =REGEXREPLACE(テキスト, 正規表現パターン, 置換文字列, [出現位置], [大文字小文字の区別])
  • Microsoft 365のサブスクリプションが必要
  • 第4引数でN番目のマッチだけを置換することも可能
  • 電話番号のハイフン除去・空白削除・HTMLタグ削除などデータクレンジングで大活躍
  • ()$1 $2 のキャプチャグループで並び順の入れ替えもできる
  • 固定文字列ならSUBSTITUTE、パターン置換ならREGEXREPLACEと使い分ける
  • 姉妹関数にREGEXTEST(判定)とREGEXEXTRACT(抽出)がある

まずは =REGEXREPLACE("03-1234-5678", "-", "") のようなシンプルな置換から試してみてください。一度覚えれば、SUBSTITUTEの多重ネストとは比較にならない便利さを実感できますよ。

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