REGEXREPLACE関数の使い方・読み方|正規表現でまとめて置き換える

執筆者:

カテゴリ:

REGEXREPLACE関数の使い方・読み方のイメージ

文字列

REGEXREPLACE関数の使い方・読み方

Excel関数辞典

読み方:REGEXREPLACE は「レジェックスリプレイス」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)

REGEXREPLACEは、正規表現に一致した部分を、別の文字に置き換える関数です。

使える環境Excel○Googleスプレッドシート○
このページの中身(22項目)
  1. 書式
  2. 正規表現の最小限の知識
  3. 不要な文字を一括削除する
  4. キャプチャで並べ替える
  5. 全行に適用する
  6. REGEXEXTRACT・REGEXMATCHとの使い分け
  7. 大文字小文字を区別しない
  8. よくある問題
  9. 単純な置換で足りるかを先に判断する
  10. 実務で使うパターンは限られる
  11. 整形の定番処理
  12. 意図しない一致に注意する
  13. 検証してから本番に適用する
  14. 処理を段階に分ける
  15. 「文字列」の関数を全体から見る
  16. 数式を書く前の手順
  17. どの関数でも共通する確認
  18. 引き継ぐときに残すこと
  19. このサイトの収録状況
  20. よくある質問
  21. まとめ
  22. 関連する関数

この記事の書式と対応環境の出どころ(2026-08-26 確認)

関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。

SUBSTITUTE が「特定の文字」を置き換えるのに対し、REGEXREPLACEは「パターン」で置き換えます。 複数種類の文字をまとめて処理できるのが強みです。

Excelにはありません。 スプレッドシート固有の関数です。

REGEXREPLACE関数の使い方の記事構成図
REGEXREPLACE関数の使い方:この記事で扱う内容

書式

=REGEXREPLACE(文字列, 正規表現, 置換文字)

一致したすべての箇所が置き換わります。1箇所だけということはできません。

正規表現の最小限の知識

記号意味
\d数字1文字
\D数字以外1文字
\s空白1文字
.任意の1文字
+直前を1回以上
*直前を0回以上
[abc]a か b か c
[^abc]a b c 以外
^先頭
$末尾
(...)キャプチャ(後で $1 で参照)
`\`または

. ( ) - などを文字そのものとして扱うときは、前に \ を付けます。

REGEXREPLACE関数の使い方の要点図
REGEXREPLACE関数の使い方

不要な文字を一括削除する

REGEXREPLACEの最頻出の用途です。

ハイフン・スペースをまとめて削除

=REGEXREPLACE(A1, "[-  ]", "")

[-  ] は「ハイフン、半角スペース、全角スペースのどれか」という意味です。

SUBSTITUTE だと入れ子が3重になります。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, "-", ""), " ", ""), " ", "")

削除対象が3つを超えたら、REGEXREPLACEに切り替えるのが実用的な目安です。

数字以外を全部削除する

=REGEXREPLACE(A1, "\D", "")

電話番号や郵便番号から記号を除いて、数字だけにできます。

計算に使うなら VALUE で数値化してください。

=VALUE(REGEXREPLACE(A1, "\D", ""))

全角数字を含めて処理する

=VALUE(REGEXREPLACE(ASC(A1), "\D", ""))

ASC で全角を半角に変換してから処理します。

記号だけ削除して文字は残す

=REGEXREPLACE(A1, "[^\w\sぁ-んァ-ン一-龥]", "")

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

=REGEXREPLACE(A1, "\s+", " ")

改行を削除する

=REGEXREPLACE(A1, "\n", "")

CSVやWebからコピーしたデータに紛れ込む改行を除去できます。

キャプチャで並べ替える

REGEXREPLACEの最も強力な機能です。

() で囲んだ部分を、置換文字の中で $1 $2 として参照できます。

姓名を入れ替える

=REGEXREPLACE(A1, "^(\S+)\s+(\S+)$", "$2 $1")

山田 太郎 → 太郎 山田

日付の形式を変える

=REGEXREPLACE(A1, "(\d{4})/(\d{1,2})/(\d{1,2})", "$1年$2月$3日")

2026/4/1 → 2026年4月1日

元が文字列の日付の場合に使えます。日付型なら TEXT を使ってください。

電話番号を整形する

=REGEXREPLACE(REGEXREPLACE(A1, "\D", ""), "^(\d{2,4})(\d{4})(\d{4})$", "$1-$2-$3")

内側でまず数字だけにして、外側でハイフンを入れています。

全行に適用する

ARRAYFORMULA が確実に効きます。

=ARRAYFORMULA(IF(A2:A="", "", REGEXREPLACE(A2:A, "[-  ]", "")))

データ整形を1本の数式で全行に効かせられるので、CSVの前処理に強い組み合わせです。

REGEXEXTRACT・REGEXMATCHとの使い分け

関数用途一致しないとき
REGEXREPLACE置き換える元の文字列がそのまま返る
REGEXEXTRACT取り出す#N/A
REGEXMATCH判定するFALSE

REGEXREPLACEは一致しなくてもエラーになりません

元の文字列がそのまま返ります。IFERROR で包む必要がないのは、REGEXEXTRACT にはない利点です。

大文字小文字を区別しない

先頭に (?i) を付けます。

=REGEXREPLACE(A1, "(?i)tokyo", "東京")

SUBSTITUTE は大文字小文字を区別するので、区別せずに置換したいときはこちらを使ってください。

よくある問題

置き換わらない

  • パターンが実際のデータと一致していない
  • 全角と半角が違う(ー と -、1 と 1)
  • 特殊文字をエスケープしていない(. ( ) [ ] * + ? \)

. を文字として扱いたいなら \. と書いてください。

想定以上に置き換わる

  • . を「任意の1文字」として使ってしまっている
  • + が貪欲に一致しすぎている → +? で最短一致に

結果が文字列になる

REGEXREPLACEの結果は常に文字列です。計算に使うなら VALUE で数値化してください。

#VALUE! が出る

正規表現の書き方が不正です。括弧の対応や、エスケープを確認してください。


単純な置換で足りるかを先に判断する

文字を置き換える方法には、文字列を指定する方法と、パターンを指定する方法があります。後者のほうが強力ですが、常に優れているわけではありません。

文字列を指定する置換で足りるのは、置き換える対象が固定の文字列である場合です。ハイフンを削除する、全角の空白を半角にする、特定の語を別の語に置き換える。こうした処理は、単純な置換のほうが読みやすく、意図も明確です。

パターンを指定する置換が必要なのは、対象が形でしか指定できない場合です。数字だけをすべて削除する、連続した空白を一つにまとめる、記号を種類ごとにまとめて処理する。こうした要求は、単純な置換では対応できません。

判断の目安は、置き換える対象を列挙できるかどうかです。列挙できるなら単純な置換、できないならパターン、と考えてください。

もうひとつ、環境の制約もあります。パターンを使う関数はスプレッドシート特有のものが多く、他の環境では動きません。ファイルを共有する予定があるなら、この点も考慮してください。→ SUBSTITUTE関数の使い方


実務で使うパターンは限られる

正規表現には多くの記号がありますが、データの整形で使うのは限られています。次の四つを覚えれば、実務の大半は書けます。

数字を表す記号

繰り返しの記号と組み合わせて、連続した数字を対象にできます。数字だけを削除する、数字部分を別の文字に置き換える、といった処理に使います。

空白を表す記号

半角の空白、全角の空白、タブ、改行をまとめて対象にできます。取り込んだデータの整形で頻繁に使います。

繰り返しの記号

零回以上と一回以上の二種類があります。連続した空白を一つにまとめる処理では、この記号が必須です。

いずれかを表す書き方

角括弧の中に候補を並べます。複数の記号をまとめて対象にできます。

これらを組み合わせれば、記号の除去、空白の正規化、数字の抽出といった処理が一つの数式で書けます。単純な置換を何重にも入れ子にするより、はるかに短く済みます。


整形の定番処理

取り込んだデータの整形では、次のような処理を組み合わせます。

連続した空白を一つにまとめる

空白を表す記号と繰り返しの記号を組み合わせ、単一の半角空白に置き換えます。全角と半角が混在していても、まとめて処理できます。

記号を除去する

電話番号や郵便番号から、ハイフンや括弧を取り除きます。突き合わせのキーとして使う場合、形式を揃えておく必要があります。

数字以外を除去する

「約1,200円」のような文字列から数字だけを取り出したい場合に使います。ただし、結果は文字列なので、数値として使うなら変換が必要です。

改行を除去する

フォームの回答から取り込んだデータには、セルの中に改行が入っていることがあります。改行を表す記号を指定して置き換えます。

これらを組み合わせた整形用の作業列を作っておけば、取り込みのたびに同じ処理が自動で行われます。数式の中で毎回処理するより、はるかに保守しやすくなります。


意図しない一致に注意する

パターンによる置換の危険は、想定していない部分にも一致してしまうことです。

たとえば、数字を削除するパターンを住所に適用すると、番地の数字も消えます。意図が「郵便番号だけを消す」だったなら、目印を含めたパターンにする必要があります。

また、パターンが緩すぎると、想定外のデータで誤動作します。テストしていない形式のデータが入ってきたときに、静かに間違った結果を返します。

対策としては、まず一致するかどうかを判定する関数で確認してから、置換に進むという手順があります。何件が対象になるかを事前に数えておけば、想定と違うときに気づけます。

もうひとつ、置換の前後で文字数を比較する方法もあります。想定より多く削られていれば、パターンが緩すぎるということです。

自動化する前に、実データの一部で必ず確認してください。パターンによる処理は、間違いに気づきにくいという性質があります。


検証してから本番に適用する

パターンによる置換は、想定外の部分に一致する危険があります。実データに適用する前に、必ず検証してください。

検証用の列を作り、置換前と置換後を並べて表示します。目で見て、意図どおりに変換されているかを確認します。

全件を目視するのは現実的でないので、いくつかの方法で絞り込みます。

第一に、置換前後で文字数が変わった行だけを抽出します。変換が起きた行が分かります。想定より多く変換されていれば、パターンが緩すぎます。

第二に、変換後の値の種類を数えます。想定される種類より多ければ、意図しない変換が起きています。重複を除く関数で一覧を出せば、異常な値が見つかります。

第三に、極端な例を探します。もっとも長い値、もっとも短い値、記号を含む値。これらは想定から外れやすいので、優先的に確認します。

第四に、変換前後で情報が失われていないかを確認します。必要な部分まで削っていないか。

この検証を経てから、本番のデータに適用してください。パターンによる処理は、間違いに気づきにくいという性質があります。


処理を段階に分ける

複雑な変換を一つのパターンで書こうとすると、読めなくなり、誤りも増えます。段階に分けてください。

たとえば、住所を正規化する場合。全角空白を半角にする、連続空白を一つにする、ハイフンを統一する、丁目番地の表記を揃える。これらを一つのパターンで書くのは無理があります。

作業列を段階ごとに用意し、順に処理します。各段階の結果が見えるので、どこで意図と違う変換が起きているかが分かります。

段階に分けると列が増えますが、非表示にできます。数式が読めなくなるコストのほうが、はるかに大きいものです。

動作が確認できた後で、必要ならまとめてください。ただし、まとめる前の段階分けの版はどこかに残しておきます。仕様が変わったときに、そこから修正するほうが早くなります。

もうひとつ、各段階に見出しを付けてください。「空白正規化」「記号統一」「桁揃え」。何をしている列なのかが分かれば、他人が引き継いだときにも扱えます。

「文字列」の関数を全体から見る

文字列は文字を加工する関数群です。同じカテゴリの関数は、つまずく場所も似ています。この記事のほかに31本あります。

記事
CHAR
CLEAN
CODE
CONCAT
CONCATENATE
EXACT
FIND
FIXED
HYPERLINK
IMAGE
JIS
LEFT
LEN
LENB
LOWER
MID
NUMBERVALUE
PROPER
REGEXEXTRACT
REGEXMATCH
REPLACE
REPT
RIGHT
SEARCH
SPLIT
SUBSTITUTE
TEXT
TEXTJOIN
TRIM
UPPER
VALUE

このカテゴリで共通するつまずき

全角と半角、前後の空白、改行。この3つが原因のほとんどです。1つで理解した内容は、同じカテゴリの他の関数にもそのまま使えます。

どれを使うかの決め方

位置で取るのか、記号を目印に取るのかで使う関数が変わります。関数の一覧を眺めて選ぼうとすると、どれも当てはまるように見えて決まりません。

迷ったときは

→ 全関数の一覧 に目的別の索引があります。


数式を書く前の手順

書き始める前に決めておくことがあります。ここが曖昧なまま書くと、途中で行き詰まります。

1. 出したい結果を一文で書く

「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。書けないなら、まだ要件が固まっていません。

2. 元データの型を確認する

全角と半角、前後の空白、改行。この3つが原因のほとんどです。=ISNUMBER(A2) で数値かどうかを確認できます。見た目が同じでも、数値と文字列は別物です。

3. 空欄と0の扱いを決める

未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから書いてください。

4. 条件の数を数える

位置で取るのか、記号を目印に取るのかで使う関数が変わります。将来条件が増える可能性があるなら、最初から複数条件に対応する形にしてください。

5. 共有先の環境を確認する

新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。

6. 1行だけ書いて確認する

全行にコピーする前に、1行分の結果が正しいかを見てください。間違ったまま広げると、直す手間が増えます。


どの関数でも共通する確認

関数を問わず、結果がずれる原因は限られています。この5つを確認すれば、大半が解決します。

参照を固定したか

下方向にコピーする数式では、動いてはいけない参照を固定します。上の数行だけ見て判断しないでください。ずれは下のほうで表面化します。

範囲の行数が揃っているか

複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。

型が揃っているか

=ISNUMBER(A2)

数値として入っているかを判定します。システムから書き出したデータでは、これが原因のことが多くあります。

前後に空白が入っていないか

=LEN(A2)&" / "&LEN(TRIM(A2))

数が違えば、余分な空白が入っています。見た目では判別できません。

別の方法で検算したか

同じ数字を別の関数でも出して、突き合わせてください。1つの結果だけを見ても、正しいかどうかは判断できません。

最終行まで確認したか

一番下までスクロールして、結果を見てください。途中から値が変わっていないかを確認します。


引き継ぐときに残すこと

数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。

何を出している数式か

一行で構いません。読めば分かると思っても、数か月後の自分には分かりません。

どの表を参照しているか

参照先のシート名と、更新の担当。別ファイルなら、その場所も書いてください。

該当しないときの扱い

空欄にしているのか、文言を出しているのか、エラーのまま残しているのか。書いていないと、受け取った側は空欄をデータなしと読みます。

触ってはいけない場所

列を挿入すると壊れる数式がある場合、必ず書き残してください。この一行があるだけで、引き継ぎ後の事故が大きく減ります。

使った関数の対応環境

新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、明記してください。

確定した期間は値にする

締めた月の集計は、値貼り付けにしてください。参照元を消しても壊れなくなり、ファイルも軽くなります。

このサイトの収録状況

現在、201本の記事をカテゴリ別に整理しています。関数名が分からない場合は、カテゴリから探してください。

カテゴリ記事数
目的別51本
集計47本
文字列31本 ←この記事
日付19本
検索・参照15本
条件15本
機能12本
配列・抽出10本
関数一覧1本

探し方の順番

関数名が分かっているなら検索窓から。やりたいことだけ決まっているなら「目的別」から。近い関数を比べたいなら、同じカテゴリの一覧から入ってください。

記事の構成

どの記事も、書式・実例・つまずきやすいところ・似た関数との使い分けを同じ順番で並べています。1本読めば、他の記事も同じ場所を探せます。


よくある質問

Q. 何も置き換わりません

パターンが一致していません。一致を判定する関数で、まず確認してください。

Q. 想定より多く置き換わります

パターンが緩すぎます。目印になる文字を含めて、範囲を限定してください。

Q. 大文字と小文字は区別されますか

区別されます。区別しない指定を先頭に置く書き方もありますが、環境によって対応が違います。

Q. 削除したいのですが

置き換え後の文字列に空文字を指定してください。

Q. 日本語も扱えますか

扱えます。ただし文字の範囲を指定する書き方は、環境によって挙動が変わることがあります。

Q. Excelでも使えますか

スプレッドシート特有の関数です。他の環境では、単純な置換を組み合わせるか、別の手段が必要です。

Q. 一部だけ取り出したいのですが

取り出す専用の関数があります。→ REGEXEXTRACT関数の使い方

Q. パターンが複雑になりすぎます

処理を分けて、作業列で段階的に行ってください。一つの数式に詰め込むより、確認も修正も楽になります。



まとめ

  • 書式は =REGEXREPLACE(文字列, "正規表現", "置換文字")
  • 一致したすべての箇所が置き換わる
  • 削除対象が3つを超えたら SUBSTITUTE から乗り換える
  • () と $1 で並べ替えができる(姓名の入れ替えなど)
  • 一致しなくてもエラーにならない(元の文字列が返る)
  • 全行適用は ARRAYFORMULA で確実に効く
  • Excelには無い

関連する関数