エクセル REGEXREPLACE関数の実務活用例5選|表記ゆれ統一・マスキングをコピペで解決

Excel関数「REGEXREPLACE」の使い方

REGEXREPLACE関数とは?読み方と使いどころ

REGEXREPLACE関数は、一般に「レジェックスリプレース」と読まれます。REGEXは「Regular Expression(レギュラー・エクスプレッション)=正規表現」の略です。

正規表現とは、文字そのものではなく「文字のパターン」を指定する書き方のことです。たとえば[0-9]と書くと「0〜9のどれか1文字」という意味になります。「03-1234-5678」という特定の文字列ではなく、「数字」「英字と数字の組み合わせ」といったパターンで検索・置換できるのが最大の特徴です。

使いどころは、次のような「置換したい文字が1種類に決まっていない」場面です。

  • 電話番号のハイフン・カッコ・スペースをまとめて削除して表記を統一したい
  • 資料共有前に、電話番号やメールアドレスの一部を***で隠したい
  • 「ABC12345」のような商品コードを「ABC-12345」の形式に一括変換したい

置換したい文字が「株式会社」のように1つに決まっているならSUBSTITUTE関数で十分です。対象が複数・不定形になった時点でREGEXREPLACEの出番と覚えておくと迷いません。

 

結論:基本の書き方と実務パターン早見表

基本の書き方は次のとおりです。

=REGEXREPLACE(文字列, パターン, 置換文字列, [置換対象], [大文字小文字の区別])

重要:REGEXREPLACE関数はMicrosoft 365(Windows・Mac)とExcel for the web専用です。Excel 2024・2021・2019などの買い切り版では使えず、#NAME?エラーになります(詳細は後述の対応バージョン表を参照)。

この記事で紹介する実務パターンの早見表です。数式はそのままコピーして使えます(対象セルはA2の想定)。

やりたいこと数式難易度
電話番号から数字以外を削除して統一=REGEXREPLACE(A2,"[^0-9]","")
連続した空白を1つにまとめる=REGEXREPLACE(A2," +"," ")
電話番号の先頭ブロックを***でマスキング=REGEXREPLACE(A2,"[0-9]+-","***-",1)★★
メールアドレスのドメイン部を隠す=REGEXREPLACE(A2,"@.+","@***")★★
日付表記を「2026/7/4」→「2026年7月4日」に変換=REGEXREPLACE(A2,"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})","$1年$2月$3日")★★★
商品コードの英字と数字の間にハイフンを挿入=REGEXREPLACE(A2,"([A-Z]+)([0-9]+)","$1-$2")★★★

 

 

REGEXREPLACE関数の構文と引数

Microsoft公式の構文は次のとおりです。

=REGEXREPLACE(text, pattern, replacement, [occurrence], [case_sensitivity])
引数必須/省略可意味
text(文字列)必須置換対象の文字列、またはセル参照
pattern(パターン)必須置き換えたい部分を表す正規表現
replacement(置換文字列)必須一致した部分と置き換えるテキスト
occurrence(置換対象)省略可何番目の一致を置換するか。既定は0(すべて置換)。負の数を指定すると末尾から数えて置換
case_sensitivity(大文字小文字の区別)省略可0=区別する(既定)、1=区別しない

REGEXREPLACEは「PCRE2」という種類の正規表現を使っています。複雑なパターンを試したい場合は、PCRE2対応のテストサイト(regex101など)を使うと、Excelと同じ結果を事前に確認できます。

 

実務活用例1:電話番号の表記ゆれを一括統一する

顧客リストの電話番号が「03-1234-5678」「(03)1234-5678」のようにバラバラなとき、次の数式で数字だけを残して統一できます。

=REGEXREPLACE(A2,"[^0-9]","")

パターン[^0-9]は「0〜9の数字以外」という意味です。数字以外をすべて空文字(””)に置換するため、ハイフン・カッコ・スペースがまとめて削除されます。

変換前(A2)変換後
03-1234-56780312345678
(03)1234-56780312345678

注意:結果は文字列として返されるため、先頭の「0」は消えません。ただし別のセルに数値としてコピーし直すと0落ちすることがあるので、貼り付け先の表示形式は「文字列」にしておくと安全です。

 

実務活用例2:個人情報をマスキングする(一部を***に置換)

資料の共有前に電話番号の一部を隠したいときは、Microsoft公式ドキュメントでも紹介されている次のパターンが使えます。

=REGEXREPLACE(A2,"[0-9]+-","***-",1)
変換前(A2)変換後
090-1234-5678***-1234-5678

[0-9]+は「1文字以上の連続する数字」、直後の-と合わせて「数字のかたまり+ハイフン」に一致します。第4引数に1を指定しているため、最初の1か所だけが置換されます。

第4引数を省略(または0)にすると、「***-***-5678」のように一致箇所がすべて置換される点に注意してください。ここが第4引数(occurrence)の使いどころです。

 

 

実務活用例3:商品コードの形式を一括変換する(キャプチャグループ)

「ABC12345」のような商品コードを「ABC-12345」に整形するには、カッコで囲んだキャプチャグループを使います。

=REGEXREPLACE(A2,"([A-Z]+)([0-9]+)","$1-$2")
変換前(A2)変換後
ABC12345ABC-12345

パターン内のカッコ( )で囲んだ部分は、置換文字列の中で$1$2…として参照できます(Microsoft公式の仕様)。この例では、

  • $1=1番目のグループ([A-Z]+)=英字部分「ABC」
  • $2=2番目のグループ([0-9]+)=数字部分「12345」

となり、元の文字を活かしたまま間にハイフンを挿入できます。

 

 

実務活用例4:日付の表記形式を変換する

文字列として入力された「2026/7/4」を「2026年7月4日」に変換する例です。キャプチャグループの応用で、順番の入れ替えや区切り文字の差し替えが自由にできます。

=REGEXREPLACE(A2,"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})","$1年$2月$3日")
変換前(A2)変換後
2026/7/42026年7月4日

{4}は「ちょうど4文字」、{1,2}は「1〜2文字」の繰り返しを表します。年(4桁)・月(1〜2桁)・日(1〜2桁)をそれぞれグループで捕まえ、区切りだけを差し替えています。

同じ考え方で、姓と名の順序入れ替え("$2, $1"のような置換)もMicrosoft公式ドキュメントで例示されています。

 

 

実務活用例5:余分な空白・スペースを整理する

他システムから貼り付けたデータにありがちな「連続スペース」は、次の数式で1つにまとめられます。

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

+(スペース+プラス)は「1個以上連続するスペース」の意味です。TRIM関数と違い、全角スペースも対象にしたい場合はパターンを"[  ]+"(半角と全角スペースを角カッコ内に並べる)に変えれば対応できます。

 

 

実務活用例6:メールアドレスの一部を隠す

顧客リストの共有時に、メールアドレスのドメイン部(@より後ろ)を隠す例です。

=REGEXREPLACE(A2,"@.+","@***")
変換前(A2)変換後
taro@example.comtaro@***

.は「任意の1文字」、+は「1回以上の繰り返し」なので、@.+で「@とそれ以降のすべて」に一致します。逆にユーザー名側を隠したい場合は、キャプチャグループを使って=REGEXREPLACE(A2,".+(@.+)","***$1")のように書けます。

 

 

要注意:「.*」の削りすぎ(貪欲マッチ)に気をつける

正規表現でつまずきやすいのが、.*.+できるだけ長く一致しようとする性質(貪欲マッチ)です。

たとえば「営業部(東京)担当(山田)」からカッコと中身を削除しようとして、次のように書いたとします。

=REGEXREPLACE(A2,"(.*)","")
パターン結果説明
(.*)営業部失敗例。最初の「(」から最後の「)」までが1つの一致とみなされ、「担当」まで消えてしまう
(.*?)営業部担当成功例。*?と書くと最短一致になり、カッコごとに分けて削除される

*+の直後に?を付けると「できるだけ短く一致する」(最短マッチ)動作に変わります。「対象と対象の間に同じ文字が複数回出てくる」データを扱うときは、最短マッチを検討してください。

 

 

SUBSTITUTE・REPLACEとの違い

従来の置換関数との使い分けは次のとおりです。

関数置換の指定方法得意な場面対応バージョン
SUBSTITUTE「この文字列」を指定特定の決まった文字の置換(例:「株式会社」→「(株)」)全バージョン
REPLACE「何文字目から何文字」を指定位置が固定されている置換全バージョン
REGEXREPLACE「このパターン」を指定表記ゆれの統一、形式変換、マスキングなどパターンが不定の置換Microsoft 365のみ

 

 

よく使う正規表現トークン早見表

トークン意味
[0-9]任意の半角数字1文字
[a-z]aからzの小文字1文字
[^0-9]数字「以外」の1文字(^を角カッコ内の先頭に置くと否定)
\d数字1文字。[0-9]と似ているが、環境によっては全角数字にも一致するという報告があるため、半角数字だけを対象にしたい場合は[0-9]が確実
\s空白文字(スペース・タブ・改行など)1文字
\w英数字とアンダースコア1文字
.任意の1文字
a*直前の文字(a)の0回以上の繰り返し
a+直前の文字(a)の1回以上の繰り返し
*? +?最短マッチ(できるだけ短く一致)
{4} / {1,2}直前の要素のちょうど4回 / 1〜2回の繰り返し
^文字列の先頭(角カッコの外で使った場合)
$パターン内では文字列の末尾。置換文字列内では$1のようにキャプチャ参照の意味になるので混同に注意
( )キャプチャグループ。置換文字列で$1$2…として参照
\( \)カッコそのものを文字として一致させたいときのエスケープ

 

 

保存版:目的別パターン集

本文で紹介した例に加えて、そのまま使えるパターンをまとめました。いずれも置換文字列は空文字(””)で「削除」に使えます。

やりたいことパターン置換文字列
英字だけを残す(数字・記号を削除)[^A-Za-z]""
空白(半角・全角)をすべて削除[  ]+""
カッコと中身を削除(複数あっても個別に)(.*?)""
数字だけを残す[^0-9]""

 

 

Copilotに数式のたたき台を作ってもらう

正規表現のパターンを一から書くのが難しい場合は、Microsoft 365のCopilotに「REGEXREPLACEで電話番号から数字以外を削除する数式を作成して」のように日本語で指示すると、数式のたたき台を作ってもらえます。ただし生成された数式が意図どおり動くとは限らないため、必ず少量のデータでテストしてから本番のリストに適用してください。

対応バージョン:Microsoft 365専用(買い切り版は不可)

Microsoft公式ドキュメントの「適用先」に基づく対応状況です。

バージョンREGEXREPLACE
Excel for Microsoft 365(Windows)○ 使える
Excel for Microsoft 365 for Mac○ 使える
Excel for the web○ 使える
Excel 2024 / 2021 / 2019 / 2016(買い切り版)× 使えない(#NAME?エラー)

ファイルを共有する際の注意:自分の環境で動いても、相手がExcel 2021などの場合は数式部分が#NAME?エラーになります。共有前に「コピー→値として貼り付け」で計算結果を固定しておくと確実です。

エラーが出るときのチェックポイント

症状主な原因対処
#NAME?が表示されるREGEXREPLACE非対応のバージョンで開いているMicrosoft 365版またはExcel for the webで開く。共有用は値貼り付けに変換
エラーになる/意図しない結果になる正規表現パターンの記述ミス(カッコの閉じ忘れ、エスケープ漏れなど)カッコ( )を文字として一致させたい場合は\( \)とエスケープする。少量のデータでテストしてから本番に適用する
置換されすぎる第4引数を省略しているため全一致が置換されている/.*の貪欲マッチ第4引数に1など置換したい番目を指定する。.*?の最短マッチを検討する
大文字・小文字が思いどおりに一致しない既定では大文字小文字を区別する第5引数に1を指定して区別しない設定にする

 

 

よくある質問(FAQ)

Q. 作った正規表現を事前にテストする方法はありますか?

A. 正規表現テストサイト(regex101など)でフレーバーに「PCRE2」を選ぶと、Excelと同じ方式で動作を確認できます。複雑なパターンは本番データに適用する前にテストするのがおすすめです。

Q. Googleスプレッドシートにも同名の関数がありますが、同じものですか?

A. 名前は同じREGEXREPLACEでも、Googleスプレッドシートは「RE2」という別方式の正規表現を使っており、引数構成も異なります(スプレッドシート版に第4・第5引数はありません)。基本的なパターンは共通で使えますが、完全互換ではない点に注意してください。

Q. Excel 2021で正規表現置換をしたい場合の代替手段は?

A. 関数としては使えないため、Power Queryでの変換、またはVBA(正規表現ライブラリ)を使う方法が代替になります。単発の作業なら、Microsoft 365環境で処理して値貼り付けした結果だけを渡すのが最も手軽です。

 

 

まとめ

  • REGEXREPLACE(レジェックスリプレース)は正規表現パターンで一括置換できる関数。構文は=REGEXREPLACE(文字列, パターン, 置換文字列, [置換対象], [大文字小文字])
  • 実務では「表記ゆれの統一([^0-9])」「マスキング」「キャプチャグループ$1を使った形式変換」の3パターンを押さえれば大半をカバーできる
  • 第4引数の既定は0(すべて置換)。1か所だけ置換したいときは番目を指定する。.*の削りすぎには.*?(最短マッチ)で対処
  • Microsoft 365専用。Excel 2024・2021・2019などの買い切り版では#NAME?になるため、共有時は値貼り付けで固定する
編集長
古見遊 正

流通業で働きながら、2004年からWindowsを使い続けている80年代生まれのサラリーマン。ExcelとPowerPointを極め、仕事の効率化を追求中。苦手だったWordも克服中!Excelを使いこなせるだけで周囲から『神扱い』されるけれど、そのせいで『システムに詳しい人』だと勘違いされがち。でも、それが新しい知識を得るきっかけになった。そんな経験を活かして、Excel・PowerPoint・Word・Windowsの時短ワザ&仕事術を発信中!

古見遊 正をフォローする
Excel関数

コメント

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