「電話番号のハイフンを一気に消したい」「メールアドレスのドメインだけ伏せ字にしたい」。データ整理をしていると、こういう一括置換の場面はよくありますよね。
これまでのExcelでは、SUBSTITUTE関数を何重にもネストしたり、マクロを書いたりするしかありませんでした。数式が長くなって、後から見直すのも一苦労です。
そんな悩みを一発で解決してくれるのがREGEXREPLACE関数です。正規表現を使って、セルの文字列をパターン指定でまとめて置換できます。
この記事では、ExcelのREGEXREPLACE関数の使い方を、構文から実務応用までまるごと解説します。コピペで動く数式とビフォーアフター表、キャプチャグループ($1 $2)による並び替え、SUBSTITUTE関数との使い分け、思い通りに動かないときのデバッグ手順まで網羅しましたので、ぜひ参考にしてください。
- ExcelのREGEXREPLACE関数とは?正規表現で文字列を一括置換できる関数
- REGEXREPLACE関数の構文と5つの引数
- 正規表現の基本パターン早見表(Excel REGEXREPLACE 対応)
- 【基本編】REGEXREPLACE関数の使い方をコピペ数式で学ぶ
- 【実務編】REGEXREPLACE関数の応用例7選
- キャプチャグループ( )で並び順を入れ替える
- REGEXREPLACEとSUBSTITUTE関数の使い分け(4つの軸で比較)
- 数式が思い通りに動かないときのデバッグ手順
- REGEXREPLACE関数のよくあるエラーと対処法
- 正規表現3関数(REGEXTEST / REGEXEXTRACT / REGEXREPLACE)の使い分け
- よくある質問(FAQ)
- まとめ:REGEXREPLACE関数で数式デバッグから解放されよう
ExcelのREGEXREPLACE関数とは?正規表現で文字列を一括置換できる関数
REGEXREPLACE関数は、セルの文字列のうち正規表現パターンに一致した部分を、別の文字列に置換するExcelの関数です。読み方は「レジェックスリプレイス」です。
2024年にMicrosoft 365へ追加された比較的新しい関数で、REGEXTEST・REGEXEXTRACTと合わせて「正規表現3関数」と呼ばれています。3関数とも同じPCRE2(Perl互換の正規表現)を採用しているので、覚えた書き方をそのまま使い回せますよ。
固定の文字列を1種類だけ置換するならSUBSTITUTE関数で十分ですが、「数字をまとめて消したい」「特定パターンの部分を伏せ字にしたい」「複数の記号を1回の数式で削除したい」といったケースで、REGEXREPLACEが真価を発揮します。
どんな業務シーンで使うのか
REGEXREPLACE関数は次のような業務シーンで活躍します。
- 電話番号・郵便番号からハイフンを一括で取り除きたいとき
- メールアドレスや個人情報の一部を伏せ字にマスキングしたいとき
- 余分な空白・記号・改行をまとめて除去してデータクレンジングしたいとき
- HTMLタグを取り除いて本文だけ取り出したいとき
- 日付の区切り文字を統一したい、姓と名を入れ替えたいとき
従来のSUBSTITUTE多重ネストと比べると、数式が見違えるほどスッキリします。後から見直す自分への思いやりにもなりますよ。
利用条件(Microsoft 365が必須)
ExcelのREGEXREPLACE関数を使うには、Microsoft 365のサブスクリプションが必要です。Excel 2019やExcel 2021、Excel 2024などの永続ライセンス版では使えません。
対応環境は次のとおりです。
- Excel for Microsoft 365(Windows / Mac)
- Excel for the web
お使いのバージョンが対応していないと #NAME? エラーになります。動かないときはまずバージョンを確認してみてくださいね。
REGEXREPLACE関数の構文と5つの引数
基本構文
=REGEXREPLACE(テキスト, 正規表現パターン, 置換文字列, [出現位置], [大文字小文字の区別])
必須の引数は最初の3つで、後ろの2つは省略できます。それぞれ詳しく見ていきましょう。
第1引数:テキスト
置換対象となる文字列、またはセル参照を指定します。
=REGEXREPLACE("03-1234-5678", "-", "")
=REGEXREPLACE(A2, "-", "")
直接文字列を入れる場合はダブルクォーテーションで囲みます。実務ではセル参照を使うことがほとんどです。
セルが数値型のとき(例: 電話番号を数値で入力した列)は #VALUE! エラーになります。TEXT(A2, "0") のように文字列化してから渡しましょう。
第2引数:正規表現パターン
置換したい部分を表す正規表現を、ダブルクォーテーションで囲んで指定します。
=REGEXREPLACE(A2, "d", "*")
上の例は「A2の中の数字を1文字ずつアスタリスクに置き換える」という意味です。d は「数字1文字」を表す特殊記号ですね。
第3引数:置換文字列
マッチした部分を何に置き換えるかを指定します。空文字列 "" を指定すれば「削除」と同じ意味になります。
=REGEXREPLACE(A2, "s", "")
この例ではA2のすべての空白文字(半角・全角・タブ・改行)を削除します。s は「空白文字」を表すパターンです。
第4引数:出現位置(occurrence)
何番目のマッチから置換するかを数値で指定します。省略すると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箇所だけ」「3番目だけ」のようにピンポイントで置換できる、意外と便利な引数です。指定した番号に該当するマッチがない場合は、元のテキストがそのまま返ります。
第5引数:大文字小文字の区別(case_sensitivity)
英字を含むパターンで大文字と小文字を区別するかを指定します。省略すると0(区別する)です。
- 0(省略時):大文字と小文字を区別する
- 1:大文字と小文字を区別しない
=REGEXREPLACE("ABC abc", "[a-z]", "*") '結果: ABC ***
=REGEXREPLACE("ABC abc", "[a-z]", "*", , 1) '結果: *** ***
第4引数を省略して第5引数だけ指定したいときは、コンマだけ書いて飛ばします(, , のように)。
正規表現の基本パターン早見表(Excel REGEXREPLACE 対応)
REGEXREPLACE関数で使える正規表現はPCRE2(Perl互換の正規表現)です。REGEXTEST・REGEXEXTRACTとも共通なので、一度覚えれば3関数すべてで使えますよ。
文字種を表す記号
| 記号 | 意味 | 例 |
|---|---|---|
d | 数字1文字(0〜9) | d+ で「123」「2026」 |
D | 数字以外の1文字 | D+ で「ABC」「あ」 |
w | 英数字またはアンダースコア | w+ で単語 |
W | 単語文字以外 | 記号・空白など |
s | 空白文字(半角スペース・タブ・改行) | 連続スペースの整形 |
S | 空白以外の文字 | 単語の塊 |
. | 任意の1文字(改行を除く) | ワイルドカード代わり |
量を表す記号(量指定子)
| 記号 | 意味 |
|---|---|
* | 直前の0回以上の繰り返し |
+ | 直前の1回以上の繰り返し |
? | 直前の0または1回 |
{n} | 直前のn回の繰り返し |
{n,m} | 直前のn〜m回の繰り返し |
*? +? | 最短一致(後述の貪欲マッチ対策) |
位置・選択を表す記号
| 記号 | 意味 | |
|---|---|---|
^ | 文字列の先頭 | |
$ | 文字列の末尾 | |
| または(OR) | |
[abc] | a・b・cのいずれか1文字 | |
[a-z] | a〜zのいずれか1文字 | |
[^0-9] | 0〜9以外の1文字 | |
(...) | キャプチャグループ(後述) |
TIP
「.」「(」「)」など正規表現の特殊記号そのものを置換対象にしたいときは
でエスケープします。「.」を消すなら"."、「(」を消すなら"("のように書きます。
置換文字列の側では、後述する $1 $2 といった「キャプチャグループ参照」が使えます。これがREGEXREPLACE関数の真骨頂ですよ。
【基本編】REGEXREPLACE関数の使い方をコピペ数式で学ぶ
それでは実際に数式を組み立ててみましょう。まずは使用頻度の高い4パターンを紹介します。
電話番号からハイフンを除去する
A列に入った電話番号からハイフンをまとめて削除します。
=REGEXREPLACE(A2, "-", "")
| A列(入力値) | B列(=REGEXREPLACEの結果) |
|---|---|
| 03-1234-5678 | 0312345678 |
| 090-1234-5678 | 09012345678 |
| 06-1111-2222 | 0611112222 |
SUBSTITUTE関数でも同じことはできますが、REGEXREPLACEなら次に紹介する「全角ハイフンや長音記号もまとめて消す」拡張がそのまま書けるのが強みです。
数字以外を一括削除する
電話番号欄に括弧や全角スペースなどが混じっていても、一発で数字だけにできます。
=REGEXREPLACE(A2, "D", "")
D は「数字以外の1文字」を表す記号です。「03-1234-5678(内線1)」のような入力でも、ハイフン・括弧・空白・「内線」のような文字までまとめて消えて「031234567815」のように数字だけが残ります。逆に「数字だけ消す」なら "d" を指定します。
余分な空白をまとめて削除する
セル内に混じった全角・半角スペース、タブ、改行をまとめて除去します。
=REGEXREPLACE(A2, "s+", "")
s+ は「1文字以上の連続した空白」を表します。Webサイトや別ファイルからコピペしたデータに見えない空白が紛れているときの掃除にぴったりです。改行コードなどの制御文字だけを取り除きたい場合は、ExcelのCLEAN関数の使い方もあわせて確認してみてください。
連続する空白を半角スペース1つにまとめる
空白を完全に消すのではなく、連続分だけ1つに整えたい場合はこちらです。
=REGEXREPLACE(A2, "s+", " ")
「Hello World」→「Hello World」のように整形されます。レポートや議事録のコピペ整形で重宝しますよ。空白を完全に消したい場合とは置換文字列が違うだけなので、用途で使い分けてください。
【実務編】REGEXREPLACE関数の応用例7選
基本パターンに慣れたら、実務でよく出てくるシーンを片付けていきましょう。コピペでそのまま使える数式を集めました。
メールアドレスのドメイン部分をマスキングする
個人情報保護のために、メールアドレスの @ より後ろを伏せ字にする例です。
=REGEXREPLACE(A2, "@.+$", "@***")
| A列(入力値) | B列(=REGEXREPLACEの結果) |
|---|---|
| taro@example.com | taro@*** |
| hanako@biz-tactics.co.jp | hanako@*** |
@.+$ は「アットマーク+1文字以上の末尾まで」を意味します。資料公開やサンプルデータ作成のときに重宝するパターンです。
HTMLタグを削除して本文だけ取り出す
Webから貼り付けた文字列からHTMLタグをまとめて除去する例です。
=REGEXREPLACE(A2, "<[^>]+>", "")
こんにちは<[^>]+> は「< で始まり > 以外の文字が1つ以上続き > で閉じる部分」を表します。「」→「こんにちは世界」のように、タグだけがきれいに消えます。
世界
全角・半角・長音記号のハイフンをまとめて除去する
電話番号の表記揺れ対策です。半角ハイフン・全角ハイフン・マイナス記号・長音記号をまとめて削除します。
=REGEXREPLACE(A2, "[--−ー]", "")
角括弧 [...] の中に「消したい文字」を並べるだけです。SUBSTITUTEでやろうとすると4重ネストが必要なところを、1つの数式で書けてしまいます。同じ要領でカンマ・ピリオド・スラッシュなど複数の記号もまとめて処理できますよ。
日付の区切り文字を統一する
/ . - など複数の区切りが混在した日付を、ハイフン区切りに統一する例です。
=REGEXREPLACE(A2, "[/.-]", "-")
| A列(入力値) | B列(=REGEXREPLACEの結果) |
|---|---|
| 2026/04/09 | 2026-04-09 |
| 2026.04.09 | 2026-04-09 |
| 2026-04-09 | 2026-04-09 |
角括弧内のハイフンは - とエスケープしておくと安全です。これで取引先ごとに表記がバラバラな日付も、後続の集計関数で扱える形に整います。
全角スペースと半角スペースを統一する
日本語の名簿で「山田 太郎」と「山田 太郎」が混在しているときの整形です。
=REGEXREPLACE(A2, "[ ]+", " ")
角括弧の中に半角スペースと全角スペースを並べてあります。連続したスペースも半角1つに整います。並び替えや重複チェックの前処理に便利です。
文字列の先頭・末尾の不要文字を削除する
データの先頭や末尾に紛れ込んだ記号を削るパターンです。
=REGEXREPLACE(A2, "^[s]+|[s]+$", "")
^[s]+ で先頭の空白、[s]+$ で末尾の空白を指定し、|(OR)で両方を対象にしています。ExcelのTRIM関数の使い方でも前後の半角空白は削れますが、TRIM関数は全角空白には対応していません。REGEXREPLACE関数なら全角空白・タブ・改行まで一気に処理できますよ。
動的配列で列全体を一括処理する
REGEXREPLACE関数は動的配列に対応しているので、範囲を渡すだけで列全体を処理できます。
=REGEXREPLACE(A2:A100, "-", "")
B2セルに上の数式を入れるだけで、A2〜A100のすべての電話番号からハイフンが消えてB列にスピルします。1行ずつ数式をコピーする手間が省けます。
キャプチャグループ( )で並び順を入れ替える
ここからはREGEXREPLACE関数の真骨頂、キャプチャグループを使った置換です。丸括弧 () で囲んだ部分は「キャプチャグループ」となり、置換文字列の中で $1 $2 $3 … として参照できます。
「姓 名」を「名 姓」に入れ替える
名簿の並び順を入れ替える例です。
=REGEXREPLACE(A2, "^(S+)s+(S+)$", "$2 $1")
| A列(入力値) | B列(=REGEXREPLACEの結果) |
|---|---|
| 山田 太郎 | 太郎 山田 |
| Suzuki Hanako | Hanako Suzuki |
(S+) は「空白以外の1文字以上」をキャプチャするパターンで、置換側の $2 $1 で順番を入れ替えています。海外向け資料を作るときの名前並び替えがワンクリックです。
日付フォーマット yyyy/mm/dd を dd-mm-yyyy に変換
yyyy/mm/dd 形式の日付文字列を、dd-mm-yyyy 形式に並び替える例です。
=REGEXREPLACE(A2, "(d{4})/(d{2})/(d{2})", "$3-$2-$1")
「2026/04/09」→「09-04-2026」のように、年月日のパーツを順番入れ替えで出力できます。海外フォーマット対応のレポートを作るときに、元データを壊さず表示だけ整えられますよ。
電話番号にハイフンを付け直す
ハイフンなしの番号にハイフンを再付与するパターンです。
=REGEXREPLACE(A2, "^(d{2,4})(d{2,4})(d{4})$", "$1-$2-$3")
「0312345678」→「03-1234-5678」のような出力になります。元データを壊さずに、見た目だけ揃えたいときに便利ですよ。
REGEXREPLACEとSUBSTITUTE関数の使い分け(4つの軸で比較)
REGEXREPLACEとよく比較されるのがSUBSTITUTE関数です。どちらも「文字列置換」が目的ですが、得意分野が異なります。4つの観点で整理しておきましょう。
速度・パフォーマンス
固定の1文字を置換するだけなら、SUBSTITUTEの方がわずかに高速です。10万行を超える大量データで処理速度が問題になるなら、SUBSTITUTEを選ぶ価値があります。
可読性・メンテナンス性
複数の文字を消したい場合、SUBSTITUTEは多重ネストが必要で数式が読みにくくなります。一方REGEXREPLACEは [abc] の文字クラスで1行にまとめられるため、後から修正するのがラクです。
バージョン互換性
SUBSTITUTEはExcel 全バージョンで使えます。REGEXREPLACEはMicrosoft 365(とExcel for the web)限定です。共有ファイルで相手のバージョンが不明なら、SUBSTITUTEの方が安全です。
使い分け早見表
| 関数 | 置換対象 | 向いているケース | 使えるバージョン |
|---|---|---|---|
| SUBSTITUTE | 固定文字列 | 「-」を「」に、など決まった文字の単純置換 | 全バージョン |
| REGEXREPLACE | 正規表現パターン | パターン置換、複数文字まとめて削除、並び替え | M365 / Web |
固定文字列の置換ならSUBSTITUTE、パターン置換と並び替えならREGEXREPLACE、と覚えておけば迷わずに済みますよ。SUBSTITUTEの基本も復習したい方はExcelのSUBSTITUTE関数の使い方もあわせてご覧ください。
数式が思い通りに動かないときのデバッグ手順
正規表現は強力ですが、最初は思った通りに動かないことも多いです。そんなときは姉妹関数を使った「三段検証」で原因を切り分けましょう。
REGEXTEST関数で段階的にパターンを検証する
まずは「そもそもパターンが当たっているか」を確認します。
=REGEXTEST(A2, "あなたのパターン")
TRUEが返るならパターンはマッチしています。FALSEが返るなら、パターンの記述ミス(エスケープ忘れ、文字クラスの書き間違いなど)を疑いましょう。詳しくはExcelのREGEXTEST関数の使い方で解説しています。
REGEXEXTRACT関数で抽出結果を確認する
パターンが当たっていることがわかったら、次は「どこを抽出しているか」を目で見て確認します。
=REGEXEXTRACT(A2, "あなたのパターン")
抽出された部分が想定通りなら、REGEXREPLACE に切り替えれば成功します。想定より広い範囲が抽出されているなら「貪欲マッチ」が原因かもしれません(次項参照)。ExcelのREGEXEXTRACT関数の使い方も参考にしてください。
貪欲マッチを最短マッチに変える
本文* + .+ などの量指定子はデフォルトで「最長一致(貪欲マッチ)」になります。たとえば <.+> は 全体にマッチしてしまうので、タグ単位で消したいなら最短マッチに変えましょう。
=REGEXREPLACE(A2, "<.+?>", "") 'OK:タグ単位で削除
=REGEXREPLACE(A2, "<[^>]+>", "") 'OK:より厳密な書き方
? を付けると「できるだけ少なく一致」する最短マッチに変わります。[^>]+ のような文字クラスで範囲を限定する書き方もよく使うテクニックです。
REGEXREPLACE関数のよくあるエラーと対処法
REGEXREPLACE関数で表示されるエラーと対処法をまとめました。
#VALUE! エラー:無効な正規表現・非文字列
原因: 第2引数に無効な正規表現を指定した、または第1引数に数値型のセルを直接渡した。
対処法: パターンを見直し、特にカッコや特殊記号のエスケープ忘れに注意しましょう。数値セルを渡す場合はTEXT関数で文字列化してから渡します。
=REGEXREPLACE(TEXT(A2, "0"), "0", "*")
#NAME? エラー:非対応バージョン
原因: REGEXREPLACE関数に対応していないバージョンのExcelで使っている、または関数名のスペルミス。
対処法: Microsoft 365のサブスクリプションで最新バージョンにアップデートしてください。Excel 2019・2021・2024(永続版)などでは使えません。関数名のスペルもあわせて確認しましょう。
置換結果が意図と違う:貪欲マッチ・エスケープ
原因: 「貪欲マッチ」が想定より広く一致している、または特殊記号のエスケープ忘れ。
対処法: .+? の最短マッチに変えるか、[^>]+ のように文字クラスで範囲を限定します。エスケープが必要な記号は . ( ) のように を前に付けます。
| エラー | 原因 | 対処法 |
|---|---|---|
| #VALUE! | 無効な正規表現・数値型セル | パターン見直し・TEXTで文字列化 |
| #NAME? | 非対応バージョン | Microsoft 365に更新 |
| 置換結果がおかしい | 貪欲マッチ・エスケープ忘れ | .+? か [^>]+、 でエスケープ |
エラーの原因はほとんどが正規表現の記述ミスです。落ち着いて1行ずつ数式を見直せば大丈夫ですよ。
正規表現3関数(REGEXTEST / REGEXEXTRACT / REGEXREPLACE)の使い分け
REGEXREPLACE関数には2つの姉妹関数があります。3つセットで覚えておくと、正規表現を使ったデータ処理が一気にラクになります。
| 関数 | 戻り値 | 用途 |
|---|---|---|
| REGEXTEST | TRUE / FALSE | パターンに一致するかを判定する |
| REGEXEXTRACT | 一致した文字列 | パターンに一致する部分を抜き出す |
| REGEXREPLACE | 置換後の文字列 | パターンに一致する部分を別の文字列に置き換える |
使い分けのイメージは次のとおりです。
- 「メールアドレスとして正しいか?」→ REGEXTEST
- 「本文からメールアドレスだけ抜き出したい」→ REGEXEXTRACT
- 「メールアドレスのドメインを伏せ字にしたい」→ REGEXREPLACE
3つとも同じPCRE2の正規表現を使うので、パターンの書き方は共通です。REGEXTESTやREGEXEXTRACTで覚えた知識は、そのままREGEXREPLACEでも活きますよ。
姉妹記事として、ExcelのREGEXTEST関数の使い方とExcelのREGEXEXTRACT関数の使い方もぜひ参考にしてください。3関数まとめて身につけると、データクレンジング作業の生産性がぐっと上がります。Googleスプレッドシートで同等の処理を行いたい場合は、スプレッドシートのREGEXREPLACE関数の使い方もあわせてどうぞ。
よくある質問(FAQ)
[faq q="REGEXREPLACE関数はExcel 2021で使えますか?" a="使えません。REGEXREPLACE関数はMicrosoft 365のサブスクリプション版(Windows/Mac/Web)でのみ利用できます。Excel 2021・2019などの買い切り版や旧バージョンでは#NAME?エラーになります。バージョンは「ファイル」→「アカウント」→「製品情報」で確認できます。"]
[faq q="SUBSTITUTE関数とREGEXREPLACE関数はどう使い分けますか?" a="置換対象が固定の文字列(例: ハイフン「-」だけを削除)ならSUBSTITUTE関数が適しています。一方、パターンで置換したい場合(例: 連続した数字を*に置換、複数の記号をまとめて削除)はREGEXREPLACE関数が便利です。またSUBSTITUTEは全Excelバージョンで使えますが、REGEXREPLACEはMicrosoft 365専用という制約があります。"]
[faq q="正規表現のパターンが合っているか確認する方法はありますか?" a="REGEXTEST関数で確認するのがおすすめです。=REGEXTEST(A2, "パターン")でTRUEが返れば、パターンは正しくマッチしています。FALSEの場合は正規表現の記述ミスを疑ってください。さらにREGEXEXTRACT関数で「どの部分がマッチしているか」を目で見て確認すると、REGEXREPLACE関数の置換結果のズレを特定しやすくなります。"]
[faq q="全角・半角の文字を同時に置換できますか?" a="できます。文字クラス(角括弧 [ ])を使って複数の文字をまとめて指定します。例えば半角ハイフンと全角ハイフンを両方削除したい場合は =REGEXREPLACE(A2, "[--]", "") のように書きます。同様に、半角スペースと全角スペースを一度に削除する場合は =REGEXREPLACE(A2, "[ ]+", "") と書けます。"]
まとめ:REGEXREPLACE関数で数式デバッグから解放されよう
REGEXREPLACE関数は、Excelのセル上で正規表現を使った柔軟な文字列置換ができる関数です。
この記事のポイントを整理します。
- 構文は
=REGEXREPLACE(テキスト, 正規表現パターン, 置換文字列, [出現位置], [大文字小文字の区別]) - Microsoft 365のサブスクリプションが必要(Excel 2019・2021・2024の永続版は不可)
- 第4引数でN番目のマッチだけを置換することも可能
- 電話番号のハイフン除去・空白削除・HTMLタグ削除などデータクレンジングで大活躍
- 全角・半角・長音記号など日本語特有の表記揺れも
[...]でまとめて処理できる - キャプチャグループ
()と$1$2で並び順の入れ替えやフォーマット変換ができる - 固定文字列ならSUBSTITUTE、パターン置換ならREGEXREPLACEと使い分ける
- 思い通りに動かないときはREGEXTEST→REGEXEXTRACTで段階的に検証する
- 姉妹関数にREGEXTEST(判定)とREGEXEXTRACT(抽出)がある
まずは =REGEXREPLACE("03-1234-5678", "-", "") のようなシンプルな置換から試してみてください。一度コツをつかめば、SUBSTITUTEの多重ネストとは比較にならない便利さを実感できますよ。
