<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>正規表現 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%be/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Sat, 01 Aug 2026 05:23:15 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>正規表現 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>VBA正規表現（RegExp）の使い方｜実務パターン5選コード付き</title>
		<link>https://mashukabu.com/excel-vba-regexp-howto/</link>
					<comments>https://mashukabu.com/excel-vba-regexp-howto/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 08 Jun 2026 15:50:54 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[中級VBA]]></category>
		<category><![CDATA[文字列処理]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=7851</guid>

					<description><![CDATA[VBAで正規表現（RegExp）を使う方法を基本から実務パターンまで解説。参照設定の手順、Test/Replace/Executeの使い方、メールアドレス検証・電話番号統一・郵便番号抽出・全角半角変換など実務5パターンのコードとメタ文字早見表を掲載。エラー処理の書き方までコピペで対応できます。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「半角・全角が混ざった文字列を整えたい」「メールアドレスが正しい形式か一発でチェックしたい」。VBAでデータ処理をしていると、こんな場面によく出くわしますよね。</p>



<p class="wp-block-paragraph">TRIMやSUBSTITUTE、LEFTやMIDなどの文字列関数を組み合わせれば、簡単な処理ならなんとかなります。でも「数字3桁＋ハイフン＋数字4桁」のような「形のパターン」を扱おうとすると、とたんに数式が長く複雑になります。書いた本人すら後で読めなくなる、なんてこともありますよね。</p>



<p class="wp-block-paragraph">そんな複雑な文字列処理を一気にシンプルにしてくれるのが、VBAの正規表現（RegExp）です。「特定の形に一致するか」「一致した部分だけ取り出す」「一致した部分だけ置き換える」といった処理を、短いパターン文字列で表現できます。</p>



<p class="wp-block-paragraph">この記事では、VBAで正規表現を使う方法を、準備から実務パターンまで丁寧に解説します。コピペで使えるサンプルコード5本と、ブックマークしておくと便利なメタ文字の早見表も用意しました。正規表現に触れたことがない方でも、読み終わるころには自分のマクロに組み込めるようになりますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">VBAで正規表現が必要になる場面</a><ol><li><a href="#toc2" tabindex="0">TRIM・SUBSTITUTEでは対処できないケースとは</a></li><li><a href="#toc3" tabindex="0">Like演算子との使い分け基準</a></li></ol></li><li><a href="#toc4" tabindex="0">RegExpオブジェクトの準備</a><ol><li><a href="#toc5" tabindex="0">参照設定あり（早期バインディング）の手順</a></li><li><a href="#toc6" tabindex="0">CreateObjectあり（遅延バインディング）の手順</a></li><li><a href="#toc7" tabindex="0">早期 vs 遅延 どちらを選ぶか比較表</a></li></ol></li><li><a href="#toc8" tabindex="0">RegExpの3つのプロパティと3つのメソッド</a><ol><li><a href="#toc9" tabindex="0">Pattern・IgnoreCase・Globalの設定方法</a></li><li><a href="#toc10" tabindex="0">Test：パターン一致チェック</a></li><li><a href="#toc11" tabindex="0">Replace：パターン一致部分の置換</a></li><li><a href="#toc12" tabindex="0">Execute：マッチ結果のコレクション取得</a></li></ol></li><li><a href="#toc13" tabindex="0">よく使うメタ文字と正規表現パターン早見表</a><ol><li><a href="#toc14" tabindex="0">メタ文字一覧（記号・意味・使用例）</a></li><li><a href="#toc15" tabindex="0">実務でよく使うパターン集8選</a></li></ol></li><li><a href="#toc16" tabindex="0">実務パターン5選：コピペで使えるサンプルコード</a><ol><li><a href="#toc17" tabindex="0">①メールアドレス形式チェック</a></li><li><a href="#toc18" tabindex="0">②電話番号ハイフン統一</a></li><li><a href="#toc19" tabindex="0">③郵便番号抽出</a></li><li><a href="#toc20" tabindex="0">④全角英数字→半角変換</a></li><li><a href="#toc21" tabindex="0">⑤不要な記号一括削除</a></li></ol></li><li><a href="#toc22" tabindex="0">エラー処理：不正パターン入力時の対策</a><ol><li><a href="#toc23" tabindex="0">On Error GoToでRegExpエラーを捕捉する</a></li><li><a href="#toc24" tabindex="0">パターン検証関数を作っておくと安全</a></li></ol></li><li><a href="#toc25" tabindex="0">ワークシート関数との使い分け</a><ol><li><a href="#toc26" tabindex="0">REGEXTEST・REGEXREPLACE・REGEXEXTRACTとの違い</a></li><li><a href="#toc27" tabindex="0">VBA RegExpを選ぶべきシーン</a></li></ol></li><li><a href="#toc28" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">VBAで正規表現が必要になる場面</span></h2>



<p class="wp-block-paragraph">正規表現は「文字列の形（パターン）」を表現するための記法です。たとえば「数字が3桁続く」「先頭が0で始まる電話番号」といったルールを、短い記号の並びで書き表せます。</p>



<p class="wp-block-paragraph">VBAでは標準の文字列関数も豊富に用意されています。ではなぜ、わざわざ正規表現を使うのでしょうか。それは、文字列関数だけでは「形のパターン」を扱うのが苦手だからです。</p>



<p class="wp-block-paragraph">ここでは、正規表現が本当に役立つ場面を整理します。逆に言えば、ここで挙げる悩みがなければ無理に使う必要はありません。適材適所で使い分けるのがコツですよ。</p>



<h3 class="wp-block-heading"><span id="toc2">TRIM・SUBSTITUTEでは対処できないケースとは</span></h3>



<p class="wp-block-paragraph">VBAの文字列関数は「決まった位置」や「決まった文字」を扱うのは得意です。たとえば前後の空白を消すならTRIM、特定の文字を別の文字に置き換えるならSUBSTITUTE（Replace関数）で十分です。</p>



<p class="wp-block-paragraph">ところが、次のようなケースになると一気に難しくなります。</p>



<ul class="wp-block-list"><li>「数字が3桁、ハイフン、数字が4桁」のように、文字の「並び方のルール」で判定したい</li><li>セルの中に紛れ込んだ郵便番号や電話番号だけを取り出したい</li><li>全角の英数字が混ざっているかどうかを検出したい</li><li>複数種類の記号をまとめて一括削除したい</li></ul>



<p class="wp-block-paragraph">たとえば「文字列がメールアドレスの形式か」を文字列関数だけで判定するとします。アットマークの有無、ドットの位置、前後の文字種など、無数のIf文が必要になります。考えただけで気が遠くなりますよね。</p>



<p class="wp-block-paragraph">これを正規表現なら、たった1行のパターンで表現できます。「形のルールで判定・抽出・置換したい」という場面こそ、正規表現の出番なのです。</p>



<h3 class="wp-block-heading"><span id="toc3">Like演算子との使い分け基準</span></h3>



<p class="wp-block-paragraph">VBAには正規表現に似た機能として、Like演算子があります。<code>If 文字列 Like "A*"</code> のように、ワイルドカードを使った曖昧な比較ができる演算子です。</p>



<p class="wp-block-paragraph">Like演算子は手軽で、参照設定も不要。「Aで始まる」「数字を1文字含む」程度の単純な判定なら、Like演算子のほうが速く書けます。</p>



<p class="wp-block-paragraph">ただしLike演算子には限界があります。「数字が3桁以上連続する」のような繰り返し回数の指定や、一致した部分の抽出はできません。複雑なパターンになるほど、正規表現に軍配が上がります。</p>



<p class="wp-block-paragraph">ざっくりした使い分けの目安は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>用途</th><th>おすすめ</th></tr></thead><tbody><tr><td>「〜で始まる」「〜を含む」程度の単純判定</td><td>Like演算子</td></tr><tr><td>繰り返し回数や文字種の細かい指定</td><td>正規表現（RegExp）</td></tr><tr><td>一致した部分を取り出したい（抽出）</td><td>正規表現（RegExp）</td></tr><tr><td>パターンに一致する全箇所を置換したい</td><td>正規表現（RegExp）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Like演算子の詳しい使い方は、<a href="https://mashukabu.com/excel-vba-like-wildcard/">VBA Like演算子の使い方｜ワイルドカード5種で文字列を曖昧比較する方法</a>で解説しています。「Likeでは難しいな」と感じたら正規表現へ、と覚えておくとスムーズですよ。</p>



<h2 class="wp-block-heading"><span id="toc4">RegExpオブジェクトの準備</span></h2>



<p class="wp-block-paragraph">VBAの正規表現は、RegExpという専用のオブジェクトを使って動かします。このRegExpは、もともとVBScript用に作られた正規表現エンジンです。Windowsに標準で組み込まれているCOMコンポーネントで、Excel VBAからの呼び出しも可能。</p>



<p class="wp-block-paragraph">RegExpオブジェクトを用意する方法は2つあります。1つは「参照設定」をする方法（早期バインディング）、もう1つはCreateObject関数で呼び出す方法（遅延バインディング）です。</p>



<p class="wp-block-paragraph">どちらでも同じことができますが、メリットが異なります。まずは両方の手順を見て、最後に使い分けの基準を整理しますね。なお、この記事のコードはExcel 2019・2021・Microsoft 365のいずれでも動作します。</p>



<h3 class="wp-block-heading"><span id="toc5">参照設定あり（早期バインディング）の手順</span></h3>



<p class="wp-block-paragraph">参照設定をしておくと、コードの記述が少しスッキリし、入力補助（IntelliSense）も効くようになります。手順は次のとおりです。</p>



<p class="wp-block-paragraph">まずVBE（Visual Basic Editor）を開きます。ExcelでAlt + F11キーを押すか、開発タブの「Visual Basic」ボタンから開けます。開発タブが表示されていない場合は、ファイル → オプション → リボンのユーザー設定で「開発」にチェックを入れてください。</p>



<p class="wp-block-paragraph">VBEが開いたら、メニューの「ツール」→「参照設定」を選びます。一覧から「Microsoft VBScript Regular Expressions 5.5」を探してチェックを入れ、OKを押します。これで準備完了です。</p>



<p class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/excel-vba-regexp-howto/01_screenshot_vbe-reference-setting.png/">_images/excel-vba-regexp-howto/01_screenshot_vbe-reference-setting.png</a></p>



<p class="wp-block-paragraph">参照設定をした場合、RegExpオブジェクトは次のように宣言します。</p>



<pre class="wp-block-code"><code>Sub RegExp早期バインディング例()
    Dim re As New RegExp '参照設定でRegExp型が使えるようになる
    re.Pattern = &quot;d{3}&quot;  'パターン: 数字が3桁連続
    re.Global = True       '一致する全箇所を対象にする

    MsgBox re.Test(&quot;商品コード123&quot;)  '「123」を含むのでTrueが返る
End Sub</code></pre>



<p class="wp-block-paragraph"><code>Dim re As New RegExp</code> のように型名を直接書ける点が、参照設定のメリットです。入力中に候補が出るので、プロパティ名のタイプミスも防げますよ。</p>



<h3 class="wp-block-heading"><span id="toc6">CreateObjectあり（遅延バインディング）の手順</span></h3>



<p class="wp-block-paragraph">もう1つの方法が、CreateObject関数を使う遅延バインディングです。参照設定が不要なので、マクロを他の人に配布するときに便利です。</p>



<p class="wp-block-paragraph">宣言と作成は次のように書きます。</p>



<pre class="wp-block-code"><code>Sub RegExp遅延バインディング例()
    Dim re As Object '型は汎用のObjectで宣言する
    Set re = CreateObject(&quot;VBScript.RegExp&quot;) 'RegExpを実行時に生成

    re.Pattern = &quot;d{3}&quot; 'パターン: 数字が3桁連続
    re.Global = True      '一致する全箇所を対象にする

    MsgBox re.Test(&quot;商品コード123&quot;)  '「123」を含むのでTrueが返る
End Sub</code></pre>



<p class="wp-block-paragraph">ポイントは2つです。1つ目は、変数を <code>As Object</code> で宣言すること。2つ目は、<code>Set re = CreateObject("VBScript.RegExp")</code> でオブジェクトを生成することです。</p>



<p class="wp-block-paragraph">参照設定をしていない環境でもそのまま動くので、社内の複数のパソコンでマクロを共有する場合はこちらが安心です。「あれ、参照設定し忘れた」というトラブルが起きませんよ。</p>



<h3 class="wp-block-heading"><span id="toc7">早期 vs 遅延 どちらを選ぶか比較表</span></h3>



<p class="wp-block-paragraph">早期バインディングと遅延バインディングは、それぞれ得意な場面が違います。次の比較表で整理しました。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>早期バインディング（参照設定）</th><th>遅延バインディング（CreateObject）</th></tr></thead><tbody><tr><td>参照設定</td><td>必要</td><td>不要</td></tr><tr><td>宣言の書き方</td><td><code>Dim re As New RegExp</code></td><td><code>Dim re As Object</code> ＋ CreateObject</td></tr><tr><td>入力補助（IntelliSense）</td><td>効く</td><td>効かない</td></tr><tr><td>実行速度</td><td>速い</td><td>やや遅い</td></tr><tr><td>配布マクロへの向き</td><td>配布先でも参照設定が必要</td><td>環境を選ばず動く</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Microsoftは、可能な限り早期バインディングを使うことを公式に推奨しています。自分専用のマクロや、速度を重視したい処理では早期バインディングが向いています。</p>



<p class="wp-block-paragraph">一方で、配布先の環境がわからない場合や、複数バージョンのExcel間で使い回したい場合は、遅延バインディングが安全です。「自分用は早期、配布用は遅延」と覚えておくと迷いませんよ。</p>



<p class="wp-block-paragraph">なお、この記事のサンプルコードは、どちらの方式でもそのまま動くように書いていきます。</p>



<h2 class="wp-block-heading"><span id="toc8">RegExpの3つのプロパティと3つのメソッド</span></h2>



<p class="wp-block-paragraph">RegExpオブジェクトは、3つのプロパティと3つのメソッドさえ押さえれば使いこなせます。覚えることが少ないのは、うれしいポイントですよね。</p>



<p class="wp-block-paragraph">プロパティは「どう探すか」の設定で、Pattern・Global・IgnoreCaseの3つです。メソッドは「何をするか」の動作で、Test・Replace・Executeの3つです。</p>



<p class="wp-block-paragraph">ここからは、それぞれを順番に見ていきます。この6つを理解すれば、後半の実務パターンもすんなり読めるようになりますよ。</p>



<h3 class="wp-block-heading"><span id="toc9">Pattern・IgnoreCase・Globalの設定方法</span></h3>



<p class="wp-block-paragraph">まずは3つのプロパティです。RegExpオブジェクトを作ったあと、探す前に設定しておきます。</p>



<pre class="wp-block-code"><code>Sub プロパティの設定例()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    re.Pattern = &quot;[a-z]+&quot;  '探したいパターンを指定する（必須）
    re.IgnoreCase = True    '大文字小文字を区別しない（既定はFalse）
    re.Global = True        '一致する全箇所を対象にする（既定はFalse）

    MsgBox re.Test(&quot;Hello&quot;) 'IgnoreCase=TrueなのでTrueが返る
End Sub</code></pre>



<p class="wp-block-paragraph">3つのプロパティの役割をまとめます。</p>



<ul class="wp-block-list"><li><strong>Pattern</strong>：探す正規表現のパターンを文字列で指定します。これがないと始まりません。</li><li><strong>IgnoreCase</strong>：Trueにすると、大文字と小文字を区別せず一致を判定します。既定値はFalseです。</li><li><strong>Global</strong>：Trueにすると、一致する箇所をすべて対象にします。既定値のFalseだと、最初の1件だけが対象です。</li></ul>



<p class="wp-block-paragraph">特に注意したいのがGlobalです。既定はFalseなので、置換や抽出で「全部のはずなのに1件しか処理されない」というときは、たいていGlobalの設定漏れですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">Test：パターン一致チェック</span></h3>



<p class="wp-block-paragraph">Testメソッドは、文字列がパターンに一致する箇所を含むかどうかを判定します。戻り値はTrueまたはFalseのブール値です。</p>



<pre class="wp-block-code"><code>Sub Testメソッドの例()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)
    re.Pattern = &quot;d+&quot; '数字が1文字以上続く

    MsgBox re.Test(&quot;注文番号A100&quot;) 'True（100が一致する）
    MsgBox re.Test(&quot;注文番号なし&quot;)  'False（数字がない）
End Sub</code></pre>



<p class="wp-block-paragraph">「一致するものが含まれていればTrue」という単純な動きです。入力チェックやバリデーションにぴったりですね。</p>



<p class="wp-block-paragraph">文字列全体が完全に一致するかを判定したいときは、パターンの先頭に <code>^</code>、末尾に <code>$</code> を付けます。<code>^</code> は文字列の先頭、<code>$</code> は末尾を表すアンカーです。この使い方は実務パターンのメールアドレス検証で詳しく見ていきます。</p>



<p class="wp-block-paragraph">このTestメソッドは、Microsoft 365のワークシート関数<a href="https://mashukabu.com/excel-function-howto-use-regextest/">REGEXTEST</a>と同じ役割を果たします。数式で完結させたいか、マクロで処理したいかで使い分けるとよいですよ。</p>



<h3 class="wp-block-heading"><span id="toc11">Replace：パターン一致部分の置換</span></h3>



<p class="wp-block-paragraph">Replaceメソッドは、パターンに一致した部分を別の文字列に置き換えて返します。呼び出し方は <code>Replace(対象文字列, 置換後の文字列)</code> の形。</p>



<pre class="wp-block-code"><code>Sub Replaceメソッドの例()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)
    re.Pattern = &quot;s+&quot; '空白文字（スペース・タブなど）が1文字以上
    re.Global = True    '全箇所を対象にする

    Dim result As String
    result = re.Replace(&quot;山田　太郎  さん&quot;, &quot;&quot;) '空白をすべて削除
    MsgBox result '「山田太郎さん」が返る
End Sub</code></pre>



<p class="wp-block-paragraph">この例では、半角の空白をまとめて削除しています。<code>s</code> は半角スペースやタブなどの空白文字を表すので、種類を気にせず一括で消せるのが便利です。なお全角スペースの扱いには注意が必要で、これは後述の早見表でくわしく補足します。</p>



<p class="wp-block-paragraph">置換後の文字列に空文字（<code>""</code>）を指定すると、一致部分の「削除」になります。不要な記号の一括削除でよく使うテクニックですよ。なお、一致部分を残したまま前後に文字を足したい場合は、キャプチャグループと後方参照（<code>$1</code> など）を使います。</p>



<p class="wp-block-paragraph">ワークシート関数の<a href="https://mashukabu.com/excel-function-howto-use-regexreplace/">REGEXREPLACE</a>も同じ置換処理を担当します。大量データをループ処理するならVBA、セル単位で完結させるなら関数、という選び方がおすすめ。</p>



<h3 class="wp-block-heading"><span id="toc12">Execute：マッチ結果のコレクション取得</span></h3>



<p class="wp-block-paragraph">Executeメソッドは、一致した箇所の情報をまとめたコレクション（MatchCollection）を返します。「一致したものを取り出したい（抽出したい）」ときに使います。</p>



<pre class="wp-block-code"><code>Sub Executeメソッドの例()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)
    re.Pattern = &quot;d+&quot; '数字が1文字以上続く
    re.Global = True    '全箇所を取り出す

    Dim matches As Object, m As Object
    Set matches = re.Execute(&quot;価格は1200円、送料は500円&quot;)

    Dim msg As String
    For Each m In matches
        msg = msg &amp; m.Value &amp; vbCrLf '一致した文字列を取り出す
    Next m
    MsgBox msg '「1200」と「500」が改行区切りで表示される
End Sub</code></pre>



<p class="wp-block-paragraph">Executeが返すMatchCollectionは、For Eachで1件ずつ取り出せます。一致件数も <code>matches.Count</code> で取得可能。</p>



<p class="wp-block-paragraph">取り出したMatchオブジェクトには、主に3つのプロパティがあります。</p>



<ul class="wp-block-list"><li><strong>Value</strong>：一致した文字列そのもの</li><li><strong>FirstIndex</strong>：一致が始まった位置（0から数える）</li><li><strong>Length</strong>：一致した文字列の長さ</li></ul>



<p class="wp-block-paragraph">抽出処理は、ワークシート関数の<a href="https://mashukabu.com/excel-function-howto-use-regexextract/">REGEXEXTRACT</a>に対応します。複数件をまとめてループ処理したいときは、VBAのExecuteが力を発揮しますよ。</p>



<h2 class="wp-block-heading"><span id="toc13">よく使うメタ文字と正規表現パターン早見表</span></h2>



<p class="wp-block-paragraph">正規表現は、記号（メタ文字）を組み合わせてパターンを作ります。最初は呪文のように見えますが、よく使う記号は限られています。</p>



<p class="wp-block-paragraph">このセクションは早見表としてまとめました。コードを書いていて「あの記号なんだっけ」となったとき、ここに戻ってくれば大丈夫です。ブックマークしておくと便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc14">メタ文字一覧（記号・意味・使用例）</span></h3>



<p class="wp-block-paragraph">VBScript RegExpの正規表現は、Perl由来のフレーバーです。基本的なメタ文字は他の言語とほぼ共通です。よく使うものを一覧にしました。</p>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th><th>使用例</th></tr></thead><tbody><tr><td><code>^</code></td><td>文字列の先頭</td><td><code>^A</code> → Aで始まる</td></tr><tr><td><code>$</code></td><td>文字列の末尾</td><td><code>円$</code> → 円で終わる</td></tr><tr><td><code>b</code></td><td>単語境界</td><td><code>bcatb</code> → 単語catだけ</td></tr><tr><td><code>B</code></td><td>単語境界以外</td><td><code>Bcat</code> → 単語の途中のcat</td></tr><tr><td><code>.</code></td><td>改行以外の任意1文字</td><td><code>a.c</code> → axcなど</td></tr><tr><td><code>w</code></td><td>半角英数字とアンダースコア（[a-zA-Z_0-9]）</td><td><code>w+</code> → 英数字の連続</td></tr><tr><td><code>W</code></td><td><code>w</code>以外の文字</td><td><code>W</code> → 記号や空白</td></tr><tr><td><code>d</code></td><td>数字（[0-9]）</td><td><code>d{4}</code> → 数字4桁</td></tr><tr><td><code>D</code></td><td>数字以外の文字</td><td><code>D+</code> → 数字以外の連続</td></tr><tr><td><code>s</code></td><td>空白文字（スペース・タブ・改行など）</td><td><code>s+</code> → 空白の連続</td></tr><tr><td><code>S</code></td><td>空白以外の文字</td><td><code>S+</code> → 空白でない連続</td></tr><tr><td><code>[xyz]</code></td><td>x・y・zのいずれか1文字</td><td><code>[abc]</code> → a/b/c</td></tr><tr><td><code>[^xyz]</code></td><td>x・y・z以外の1文字</td><td><code>[^0-9]</code> → 数字以外</td></tr><tr><td><code>*</code></td><td>直前の0回以上の繰り返し</td><td><code>a*</code> → 空文字やaaa</td></tr><tr><td><code>+</code></td><td>直前の1回以上の繰り返し</td><td><code>a+</code> → a、aaa</td></tr><tr><td><code>?</code></td><td>直前の0または1回</td><td><code>colou?r</code> → colorとcolour</td></tr><tr><td><code>{n}</code></td><td>ちょうどn回</td><td><code>d{3}</code> → 数字ちょうど3桁</td></tr><tr><td><code>{n,}</code></td><td>n回以上</td><td><code>d{2,}</code> → 数字2桁以上</td></tr><tr><td><code>{n,m}</code></td><td>n回以上m回以下</td><td><code>d{2,4}</code> → 数字2〜4桁</td></tr><tr><td><code>(abc)</code></td><td>グループ化・キャプチャ</td><td><code>(d{3})-(d{4})</code></td></tr><tr><td>`a</td><td>b`</td><td>aまたはb</td><td>`cat</td><td>dog` → catかdog</td></tr><tr><td><code>1 2</code></td><td>後方参照</td><td>1番目のグループの再利用</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ここで1つ大事な注意点があります。<code>w</code> や <code>d</code> は、半角の英数字にしか一致しません。日本語（ひらがな・カタカナ・漢字）や全角の英数字には一致しないのです。</p>



<p class="wp-block-paragraph">日本語を扱いたいときは、文字コードの範囲を直接指定します。たとえばひらがなは <code>[ぁ-ゖ]</code>、カタカナは <code>[ァ-ヺ]</code> のように書きます。全角英数字の扱いは、後半の実務パターンで具体的に解説しますよ。</p>



<h3 class="wp-block-heading"><span id="toc15">実務でよく使うパターン集8選</span></h3>



<p class="wp-block-paragraph">実務でそのまま使えるパターンを8つ厳選しました。Patternプロパティに貼り付けて使えます。コピペ用にどうぞ。</p>



<figure class="wp-block-table"><table><thead><tr><th>用途</th><th>パターン</th></tr></thead><tbody><tr><td>メールアドレス形式（完全一致）</td><td><code>^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}$</code></td></tr><tr><td>電話番号（ハイフン区切り）</td><td><code>^0d{1,4}-d{1,4}-d{4}$</code></td></tr><tr><td>郵便番号（3桁-4桁）</td><td><code>d{3}-d{4}</code></td></tr><tr><td>半角数字のみ</td><td><code>^d+$</code></td></tr><tr><td>URL（httpまたはhttps）</td><td><code>https?://[w./%#&?=-]+</code></td></tr><tr><td>全角英数字の検出</td><td><code>[Ａ-Ｚａ-ｚ０-９]+</code></td></tr><tr><td>日付（YYYY/MM/DD形式）</td><td><code>d{4}/d{1,2}/d{1,2}</code></td></tr><tr><td>前後の空白（全角・半角）</td><td>`^[s　]+</td><td>[s　]+$`</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">最後の空白パターンにある <code>　</code> は全角スペースです。VBScript RegExpの <code>s</code> は半角スペースやタブを対象とし、全角スペース（U+3000）には一致しません。全角も確実に対象にしたいときは、このように全角スペースを文字クラスへ明示的に含めると安心ですよ。</p>



<p class="wp-block-paragraph">それでは、これらのパターンを使った実務コードを次のセクションで見ていきましょう。</p>



<h2 class="wp-block-heading"><span id="toc16">実務パターン5選：コピペで使えるサンプルコード</span></h2>



<p class="wp-block-paragraph">ここからは、実務でそのまま使える5つのパターンを、完成コードとして紹介します。すべてコピペして動かせるように書いています。</p>



<p class="wp-block-paragraph">5つのパターンは次のとおりです。</p>



<ol class="wp-block-list"><li>メールアドレス形式チェック</li><li>電話番号ハイフン統一</li><li>郵便番号抽出</li><li>全角英数字→半角変換</li><li>不要な記号一括削除</li></ol>



<p class="wp-block-paragraph">それぞれ「どんな場面で使うか」と「コードの中で何が起きているか」を添えています。自分の業務に合わせてパターンを書き換えれば、応用も簡単ですよ。</p>



<p class="wp-block-paragraph">なお、これらのコードを保存するときは、必ずマクロ有効ブック（.xlsm）形式で保存してください。通常の.xlsx形式ではマクロが保存されず、次に開いたときに消えてしまいます。</p>



<h3 class="wp-block-heading"><span id="toc17">①メールアドレス形式チェック</span></h3>



<p class="wp-block-paragraph">入力された文字列が、メールアドレスの形式として正しいかを判定するコードです。フォーム入力や名簿のチェックで活躍します。</p>



<pre class="wp-block-code"><code>Sub メールアドレス形式チェック()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    'メールアドレスの形式パターン（完全一致のため^と$で囲む）
    re.Pattern = &quot;^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}$&quot;
    re.IgnoreCase = True '大文字小文字を区別しない

    Dim 対象 As String
    対象 = Range(&quot;A1&quot;).Value 'A1セルの値をチェック対象にする

    If re.Test(対象) Then
        Range(&quot;B1&quot;).Value = &quot;OK&quot; '形式が正しい
    Else
        Range(&quot;B1&quot;).Value = &quot;形式エラー&quot; '形式が不正
    End If
End Sub</code></pre>



<p class="wp-block-paragraph">パターンを前から読み解いてみます。<code>^[A-Za-z0-9._%+-]+</code> はアットマークの前の部分で、英数字や一部記号が1文字以上。<code>@</code> でアットマーク。</p>



<p class="wp-block-paragraph"><code>[A-Za-z0-9.-]+</code> がドメイン名。<code>.[A-Za-z]{2,}$</code> で、最後にドットと2文字以上のアルファベットが来て終わる、という意味です。</p>



<p class="wp-block-paragraph"><code>^</code> と <code>$</code> で囲むことで「文字列全体がこの形か」を判定しています。これがないと、余計な文字が混じっていても一致してしまうので注意してくださいね。</p>



<p class="wp-block-paragraph">なお、このパターンは厳密なRFC準拠ではありません。ただ、実務上のチェックとしては十分な精度がありますよ。</p>



<h3 class="wp-block-heading"><span id="toc18">②電話番号ハイフン統一</span></h3>



<p class="wp-block-paragraph">ハイフンが入っていたり省略されていたりとバラバラな電話番号を、判定するコードです。まずは「正しいハイフン区切りになっているか」をチェックします。</p>



<pre class="wp-block-code"><code>Sub 電話番号フォーマットチェック()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    '0始まり、ハイフン区切りの電話番号パターン
    re.Pattern = &quot;^0d{1,4}-d{1,4}-d{4}$&quot;

    Dim i As Long
    Dim 最終行 As Long
    最終行 = Cells(Rows.Count, 1).End(xlUp).Row 'A列の最終行を取得

    For i = 1 To 最終行
        If re.Test(Cells(i, 1).Value) Then
            Cells(i, 2).Value = &quot;OK&quot; '形式が正しい
        Else
            Cells(i, 2).Value = &quot;要確認&quot; 'ハイフンの位置が不正
        End If
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">パターンの <code>^0d{1,4}</code> は、0で始まり数字が1〜4桁続く市外局番の部分です。<code>-d{1,4}</code> が市内局番、<code>-d{4}$</code> が末尾の4桁を表します。固定電話と携帯電話の両方をカバーできる、ゆるめのパターン。</p>



<p class="wp-block-paragraph">ハイフンを除去して数字だけに統一したい場合は、Replaceメソッドを使います。次のように1行で書けますよ。</p>



<pre class="wp-block-code"><code>Sub 電話番号からハイフン削除()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)
    re.Pattern = &quot;-&quot; 'ハイフンを対象にする
    re.Global = True  '全箇所を削除する

    Range(&quot;C1&quot;).Value = re.Replace(Range(&quot;A1&quot;).Value, &quot;&quot;)
    '例: 03-1234-5678 → 0312345678
End Sub</code></pre>



<p class="wp-block-paragraph">ちなみに、このパターンは「+81」で始まる国際電話番号の形式には対応していません。国内の番号を前提としていますので、海外の連絡先を扱うときは別途調整してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc19">③郵便番号抽出</span></h3>



<p class="wp-block-paragraph">住所が1つのセルにまとめて入力されていて、その中から郵便番号だけを取り出したいケースです。Executeメソッドで抽出します。</p>



<pre class="wp-block-code"><code>Sub 郵便番号を抽出()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    re.Pattern = &quot;d{3}-d{4}&quot; '数字3桁-数字4桁
    re.Global = True            '複数あれば全部取り出す

    Dim matches As Object
    Set matches = re.Execute(Range(&quot;A1&quot;).Value) 'A1から抽出

    If matches.Count &gt; 0 Then
        Range(&quot;B1&quot;).Value = matches(0).Value '最初に見つかった郵便番号
    Else
        Range(&quot;B1&quot;).Value = &quot;見つかりません&quot;
    End If
End Sub</code></pre>



<p class="wp-block-paragraph"><code>d{3}-d{4}</code> というパターンで、「数字3桁・ハイフン・数字4桁」という郵便番号の形を表しています。<code>matches(0).Value</code> で、最初に見つかった郵便番号を取り出しています。</p>



<p class="wp-block-paragraph"><code>matches.Count</code> で一致件数を確認してから処理しているのがポイント。1件も見つからないときに <code>matches(0)</code> へアクセスするとエラーになるので、この件数チェックでガードしています。</p>



<p class="wp-block-paragraph">複数の郵便番号が含まれる文字列なら、For Eachループですべて取り出せます。Executeは抽出処理の万能選手ですよ。</p>



<h3 class="wp-block-heading"><span id="toc20">④全角英数字→半角変換</span></h3>



<p class="wp-block-paragraph">全角で入力された「ＡＢＣ１２３」のような英数字を、半角の「ABC123」に変換するコードです。RegExpとStrConv関数を組み合わせます。</p>



<p class="wp-block-paragraph">ここで大事なのは、RegExp単体では全角から半角への「変換」はできない、という点です。RegExpは「全角英数字の場所を見つける」役割、実際の変換はVBA標準のStrConv関数が担当します。つまり、両者の役割分担。</p>



<pre class="wp-block-code"><code>Sub 全角英数字を半角に変換()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    re.Pattern = &quot;[Ａ-Ｚａ-ｚ０-９]+&quot; '全角の英大文字・英小文字・数字
    re.Global = True                  '全箇所を対象にする

    Dim 元 As String
    元 = Range(&quot;A1&quot;).Value

    Dim matches As Object, m As Object
    Set matches = re.Execute(元)

    Dim 結果 As String
    結果 = 元
    For Each m In matches
        '見つけた全角部分をStrConvで半角に変換し、置き換える
        結果 = Replace(結果, m.Value, StrConv(m.Value, vbNarrow))
    Next m

    Range(&quot;B1&quot;).Value = 結果 '例: ＡＢＣ１２３ → ABC123
End Sub</code></pre>



<p class="wp-block-paragraph">処理の流れを整理します。まずExecuteで全角英数字のかたまりを見つけます。</p>



<p class="wp-block-paragraph">次に、見つけた1つひとつを <code>StrConv(m.Value, vbNarrow)</code> で半角に変換します。そして、VBA標準のReplace関数で元の全角部分を半角に置き換える、という流れ。</p>



<p class="wp-block-paragraph"><code>vbNarrow</code> は「全角を半角に変換する」というStrConvの定数です。逆に半角を全角にしたいときは <code>vbWide</code> を使います。</p>



<p class="wp-block-paragraph">文字列の中の英数字だけを半角に揃えたいときに重宝します。日本語の住所や氏名はそのまま残して、英数字だけ整える、といった処理にぴったりですよ。</p>



<h3 class="wp-block-heading"><span id="toc21">⑤不要な記号一括削除</span></h3>



<p class="wp-block-paragraph">文字列に紛れ込んだ全角記号などを、まとめて削除するコードです。コピペで持ち込んだデータに余計な装飾記号が付いている、なんてときに使えます。</p>



<pre class="wp-block-code"><code>Sub 不要な記号を一括削除()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    '削除したい全角記号を明示的に列挙する（誤削除を防ぐため）
    re.Pattern = &quot;[★☆※→←【】「」（）・]+&quot;
    re.Global = True 'すべての一致箇所を削除する

    Range(&quot;B1&quot;).Value = re.Replace(Range(&quot;A1&quot;).Value, &quot;&quot;)
    '例: 【重要】★お知らせ → 重要お知らせ
End Sub</code></pre>



<p class="wp-block-paragraph"><code>re.Replace(対象, "")</code> のように置換後を空文字にすることで、一致した記号をすべて削除しています。GlobalをTrueにしているので、何個あっても一度で消えます。</p>



<p class="wp-block-paragraph">削除したい記号を <code>[★☆※→…]</code> のように1つずつ明示的に列挙するのがポイント。<code>[！-／]</code> のような広い範囲指定もできますが、範囲指定は思わぬ文字まで巻き込んで消してしまうリスクがあります。</p>



<p class="wp-block-paragraph">大切なデータを扱うときほど、「消したい記号だけを並べる」やり方が安全です。少し手間でも、誤削除を防げると考えれば安いものですよ。</p>



<h2 class="wp-block-heading"><span id="toc22">エラー処理：不正パターン入力時の対策</span></h2>



<p class="wp-block-paragraph">正規表現は便利ですが、パターンの書き方を間違えると実行時エラーになります。特に、パターンをユーザー入力やセルの値から動的に組み立てる場合は要注意です。</p>



<p class="wp-block-paragraph">たとえば閉じカッコのない <code>(d+</code> のような不正なパターンをセットするとします。TestやExecuteの実行時にエラーが発生して、マクロが止まってしまいます。</p>



<p class="wp-block-paragraph">こうした事故を防ぐために、エラー処理を組み込んでおきましょう。マクロを安全に動かすための、最後のひと工夫です。</p>



<h3 class="wp-block-heading"><span id="toc23">On Error GoToでRegExpエラーを捕捉する</span></h3>



<p class="wp-block-paragraph">VBAでエラーを捕捉する基本は、On Error GoToステートメントです。エラーが起きたら指定したラベルへジャンプし、メッセージを出して安全に処理を終えられます。</p>



<pre class="wp-block-code"><code>Sub エラー処理つきパターン判定()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    On Error GoTo エラー処理 'エラー発生時はラベルへジャンプ

    re.Pattern = Range(&quot;A1&quot;).Value 'セルからパターンを取得（不正かもしれない）
    Dim 結果 As Boolean
    結果 = re.Test(Range(&quot;B1&quot;).Value) '判定を実行

    MsgBox &quot;判定結果: &quot; &amp; 結果
    Exit Sub '正常終了（エラー処理を通らないようExit）

エラー処理:
    MsgBox &quot;パターンが不正です: &quot; &amp; Err.Description '原因を表示
End Sub</code></pre>



<p class="wp-block-paragraph"><code>On Error GoTo エラー処理</code> を宣言しておくと、その後でエラーが起きた瞬間に「エラー処理:」ラベルへ飛びます。<code>Err.Description</code> には、エラーの内容が文字列で入っているので、原因確認に便利。</p>



<p class="wp-block-paragraph">注意したいのが、正常終了の直前に置いた <code>Exit Sub</code> です。これがないと、エラーがなくてもそのままエラー処理ラベルの中身まで実行してしまいます。「成功したのにエラーメッセージが出る」という妙な動きを防ぐための、お約束のひと言ですよ。</p>



<p class="wp-block-paragraph">On Errorの3つの形式（GoToラベル・Resume Next・GoTo 0）の使い分けは、<a href="https://mashukabu.com/vba-error-handling-complete-guide/">VBAのエラーハンドリング完全ガイド｜On Error GoToとResume Nextの使い分け</a>で詳しく解説しています。あわせて読むと理解が深まりますよ。</p>



<h3 class="wp-block-heading"><span id="toc24">パターン検証関数を作っておくと安全</span></h3>



<p class="wp-block-paragraph">同じエラー処理を何度も書くのは面倒ですよね。そこで、「このパターンは有効か」を判定する関数を1つ作っておくと、使い回せて便利です。</p>



<pre class="wp-block-code"><code>'パターンが有効ならTrue、不正ならFalseを返す関数
Function パターンは有効か(ByVal pat As String) As Boolean
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    On Error GoTo 不正 'エラーが出たら不正ラベルへ
    re.Pattern = pat
    re.Test &quot;テスト&quot; '実際に試して動くか確認する

    パターンは有効か = True '問題なければTrue
    Exit Function

不正:
    パターンは有効か = False 'エラーが出たらFalse
End Function</code></pre>



<p class="wp-block-paragraph">この関数を使えば、本処理の前に <code>If パターンは有効か(パターン文字列) Then</code> のように安全確認ができます。不正なパターンが来ても、マクロが止まらず分岐で対処できるわけです。</p>



<p class="wp-block-paragraph">ユーザーが自由にパターンを入力できるツールを作るときは、この検証関数が頼りになります。「まず安全確認、それから本処理」の流れを習慣にしておくと安心ですよ。</p>



<h2 class="wp-block-heading"><span id="toc25">ワークシート関数との使い分け</span></h2>



<p class="wp-block-paragraph">ここまでVBAの正規表現を見てきましたが、実はMicrosoft 365には正規表現を使えるワークシート関数もあります。REGEXTEST・REGEXREPLACE・REGEXEXTRACTの3つです。</p>



<p class="wp-block-paragraph">「じゃあ関数とVBA、どっちを使えばいいの」と迷いますよね。それぞれ得意な場面が違うので、ここで整理しておきます。</p>



<p class="wp-block-paragraph">結論から言うと、セル単位で完結する処理は関数、繰り返しや条件分岐を含む処理はVBA、という分け方が基本です。</p>



<h3 class="wp-block-heading"><span id="toc26">REGEXTEST・REGEXREPLACE・REGEXEXTRACTとの違い</span></h3>



<p class="wp-block-paragraph">ワークシート関数の3つは、VBAのRegExpメソッドとほぼ対応しています。対応関係を表にまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>ワークシート関数</th><th>VBA RegExp</th></tr></thead><tbody><tr><td>パターン一致チェック</td><td>REGEXTEST</td><td>Testメソッド</td></tr><tr><td>パターン一致部分の置換</td><td>REGEXREPLACE</td><td>Replaceメソッド</td></tr><tr><td>パターン一致部分の抽出</td><td>REGEXEXTRACT</td><td>Executeメソッド</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ワークシート関数の大きな利点は、数式を入れるだけで使える手軽さです。プログラミングの知識がなくても、セルに <code>=REGEXTEST(A1,"d+")</code> と書くだけで判定できます。</p>



<p class="wp-block-paragraph">ただし、ワークシート関数はMicrosoft 365専用です。Excel 2019や2021では使えません。一方、VBAのRegExpはどのバージョンでも動くという強みがあります。</p>



<p class="wp-block-paragraph">それぞれの関数の詳しい使い方は、<a href="https://mashukabu.com/excel-function-howto-use-regextest/">REGEXTEST関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-regexreplace/">REGEXREPLACE関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-regexextract/">REGEXEXTRACT関数</a>の各記事を参考にしてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc27">VBA RegExpを選ぶべきシーン</span></h3>



<p class="wp-block-paragraph">では、どんなときにVBAの正規表現を選ぶべきでしょうか。次のような場面ではVBAが向いています。</p>



<ul class="wp-block-list"><li>数百行・数千行をまとめて一括処理したいとき（ループ処理が速い）</li><li>「一致したらこのシートへ転記」のように条件分岐を伴うとき</li><li>全角→半角変換のように、StrConvなど他の関数と組み合わせたいとき</li><li>Microsoft 365以外（Excel 2019・2021）の環境で正規表現を使いたいとき</li><li>ボタン一発で実行する定型業務に組み込みたいとき</li></ul>



<p class="wp-block-paragraph">逆に、1つのセルの判定や置換で済むなら、わざわざマクロを書く必要はありません。ワークシート関数のほうが手早く片付きます。</p>



<p class="wp-block-paragraph">ちなみに、Googleスプレッドシートにも正規表現を使える関数があります。スプレッドシートでの置換は<a href="https://mashukabu.com/spreadsheet-regexreplace-function/">スプレッドシートのREGEXREPLACE関数</a>で解説していますので、Sheetsを使う方はそちらもどうぞ。</p>



<p class="wp-block-paragraph">ツールに応じて使い分ければ、文字列処理の悩みはほとんど解決できますよ。</p>



<h2 class="wp-block-heading"><span id="toc28">まとめ</span></h2>



<p class="wp-block-paragraph">VBAの正規表現（RegExp）について、準備から実務パターンまで解説してきました。最後に要点を振り返ります。</p>



<ul class="wp-block-list"><li>正規表現は「形のパターン」での判定・抽出・置換が得意で、TRIMやSUBSTITUTEでは難しい処理を一気にシンプルにできる</li><li>RegExpオブジェクトは「参照設定（早期バインディング）」か「CreateObject（遅延バインディング）」で用意する。自分用は早期、配布用は遅延が目安</li><li>覚えるのは3つのプロパティ（Pattern・Global・IgnoreCase）と3つのメソッド（Test・Replace・Execute）だけ</li><li>日本語や全角文字は <code>w</code> や <code>d</code> に一致しないので、文字コード範囲で指定する</li><li>不正なパターンに備えて、On Error GoToや検証関数でエラー処理を入れておくと安全</li><li>セル単位の処理はワークシート関数、ループや条件分岐を伴う処理はVBAと使い分ける</li></ul>



<p class="wp-block-paragraph">正規表現は最初こそ記号の羅列に見えますが、よく使うパターンは限られています。この記事の早見表とサンプルコード5本を手元に置いておけば、実務の文字列処理でつまずくことはぐっと減りますよ。</p>



<p class="wp-block-paragraph">まずは身近なデータで、メールアドレスチェックや郵便番号抽出から試してみてください。一度コツをつかめば、これまで手作業でやっていた面倒なクレンジングが、ボタン一発で片付くようになりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-vba-regexp-howto/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのREGEXEXTRACT関数の使い方｜正規表現で文字列を抽出する</title>
		<link>https://mashukabu.com/excel-function-howto-use-regexextract/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-regexextract/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 04:11:05 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[REGEXEXTRACT関数]]></category>
		<category><![CDATA[REGEXTEST]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[文字列抽出]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5896</guid>

					<description><![CDATA[ExcelのREGEXEXTRACT関数の使い方を初心者向けに解説。構文・引数（テキスト・パターン・return_mode・大文字小文字の区別）の基本から、メールアドレス・電話番号・URLドメイン・日付分解などの実務例を数式付きで紹介。キャプチャグループの使い方、#VALUE!や#N/Aエラーの対処、REGEXTEST・REGEXREPLACEとの使い分けもまとめました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「長い文字列の中からメールアドレスだけ取り出したい」「URLからドメイン部分だけを抜き出したい」。データ整理をしていると、こんな場面に出くわしますよね。</p>



<p class="wp-block-paragraph">これまでのExcelでは、LEFT・RIGHT・MID・FINDを組み合わせた長い数式を書くしかありませんでした。位置がズレるだけで壊れてしまう、あの面倒な数式ですね。</p>



<p class="wp-block-paragraph">そんなときに便利なのがExcelのREGEXEXTRACT関数です。正規表現を使って、狙った文字列を一発で抜き出せますよ。</p>



<p class="wp-block-paragraph">この記事では、ExcelのREGEXEXTRACT関数の使い方を基本から実務例まで解説します。キャプチャグループの使い方や姉妹関数との使い分けもまとめましたので、ぜひ参考にしてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのREGEXEXTRACT関数とは？</a><ol><li><a href="#toc2" tabindex="0">どんなときに使う関数か</a></li><li><a href="#toc3" tabindex="0">利用条件（Microsoft 365が必須）</a></li></ol></li><li><a href="#toc4" tabindex="0">REGEXEXTRACT関数の構文と引数</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">第1引数：テキスト</a></li><li><a href="#toc7" tabindex="0">第2引数：正規表現パターン</a></li><li><a href="#toc8" tabindex="0">第3引数：戻り値モード（return_mode）</a></li><li><a href="#toc9" tabindex="0">第4引数：大文字小文字の区別</a></li></ol></li><li><a href="#toc10" tabindex="0">Excel REGEXEXTRACT関数の基本的な使い方</a><ol><li><a href="#toc11" tabindex="0">文字列から最初の数字列を取り出す</a></li><li><a href="#toc12" tabindex="0">郵便番号を抜き出す</a></li><li><a href="#toc13" tabindex="0">本文からメールアドレスを抽出する</a></li><li><a href="#toc14" tabindex="0">IFERRORでエラーを隠す</a></li></ol></li><li><a href="#toc15" tabindex="0">実践的な使い方・応用例</a><ol><li><a href="#toc16" tabindex="0">電話番号の市外局番だけを抽出する</a></li><li><a href="#toc17" tabindex="0">URLからドメイン部分を取得する</a></li><li><a href="#toc18" tabindex="0">日付文字列から年・月・日を分離する</a></li><li><a href="#toc19" tabindex="0">本文中のハッシュタグをすべて抽出する</a></li><li><a href="#toc20" tabindex="0">メールアドレスからユーザー名とドメインを分ける</a></li></ol></li><li><a href="#toc21" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc22" tabindex="0">#N/A エラー</a></li><li><a href="#toc23" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc24" tabindex="0">#NAME? エラー</a></li><li><a href="#toc25" tabindex="0">エラー一覧表</a></li></ol></li><li><a href="#toc26" tabindex="0">列全体に一括適用する方法（MAP関数との組み合わせ）</a><ol><li><a href="#toc27" tabindex="0">MAP + LAMBDAの書き方パターン</a></li></ol></li><li><a href="#toc28" tabindex="0">REGEXTEST と組み合わせたフィルタリングパターン</a><ol><li><a href="#toc29" tabindex="0">メールアドレスが含まれる行だけを絞り込む</a></li><li><a href="#toc30" tabindex="0">絞り込んだ上で抽出する2段階パターン</a></li></ol></li><li><a href="#toc31" tabindex="0">REGEXREPLACE との使い分けと連携</a><ol><li><a href="#toc32" tabindex="0">取り出しにくいなら「削除」で代用する</a></li><li><a href="#toc33" tabindex="0">よく使う正規表現パターン早見表</a></li></ol></li><li><a href="#toc34" tabindex="0">REGEXTEST・REGEXREPLACEとの使い分け</a></li><li><a href="#toc35" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのREGEXEXTRACT関数とは？</span></h2>



<p class="wp-block-paragraph">REGEXEXTRACT関数は、<strong>文字列の中から正規表現パターンに一致する部分を抜き出すExcelの関数</strong>です。読み方は「レジェックスエクストラクト」で、メールアドレスやURL、日付など狙った形式の文字列をピンポイントで取り出せます。</p>



<p class="wp-block-paragraph">2024年にMicrosoft 365へ追加された新しい関数で、REGEXTEST・REGEXREPLACEとともに「正規表現3関数」と呼ばれています。姉妹関数のREGEXTESTがパターンの「判定」を担うのに対し、REGEXEXTRACTは「抽出」を担当します。</p>



<p class="wp-block-paragraph">LEFT・MID・FINDを組み合わせた長い数式に悩まされてきた方には、まさに救世主のような関数ですよ。</p>



<h3 class="wp-block-heading"><span id="toc2">どんなときに使う関数か</span></h3>



<p class="wp-block-paragraph">REGEXEXTRACT関数は次のようなシーンで活躍します。</p>



<ul class="wp-block-list"><li>問い合わせ本文からメールアドレスだけを取り出したいとき</li><li>電話番号の市外局番だけを抜き出したいとき</li><li>URLからドメイン部分を取得したいとき</li><li>日付文字列を年・月・日に分解したいとき</li><li>商品コードから特定の桁だけを抽出したいとき</li></ul>



<p class="wp-block-paragraph">LEFT・RIGHT・MIDの入れ子から解放されて、数式がすっきりしますよ。</p>



<h3 class="wp-block-heading"><span id="toc3">利用条件（Microsoft 365が必須）</span></h3>



<p class="wp-block-paragraph">REGEXEXTRACT関数を使うには、Microsoft 365のサブスクリプションが必要です。Excel 2019やExcel 2021などの永続ライセンス版では使えません。</p>



<p class="wp-block-paragraph">対応環境は次のとおりです。</p>



<ul class="wp-block-list"><li>Excel for Microsoft 365（Windows / Mac）</li><li>Excel for the web</li></ul>



<p class="wp-block-paragraph">お使いのバージョンが対応しているか、事前に確認しておきましょう。バージョンが古いと <code>#NAME?</code> エラーになってしまいます。</p>



<h2 class="wp-block-heading"><span id="toc4">REGEXEXTRACT関数の構文と引数</span></h2>



<h3 class="wp-block-heading"><span id="toc5">基本構文</span></h3>



<pre class="wp-block-code"><code>=REGEXEXTRACT(テキスト, 正規表現パターン, [戻り値モード], [大文字小文字の区別])</code></pre>



<p class="wp-block-paragraph">第3引数と第4引数は省略可能です。まずは第1・第2引数だけで十分使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc6">第1引数：テキスト</span></h3>



<p class="wp-block-paragraph">抽出元の文字列またはセル参照を指定します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(&quot;お問い合わせ: taro@example.com まで&quot;, &quot;[w.+-]+@[w.-]+&quot;)
=REGEXEXTRACT(A2, &quot;d+&quot;)</code></pre>



<p class="wp-block-paragraph">実務ではセル参照を使うのが一般的です。セルが数値型の場合はそのままでは使えないので、TEXT関数（数値を指定した書式の文字列に変換する関数）で文字列化してから渡しましょう。</p>



<h3 class="wp-block-heading"><span id="toc7">第2引数：正規表現パターン</span></h3>



<p class="wp-block-paragraph">抜き出したい形式を正規表現でダブルクォーテーションで囲んで指定します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;d{3}-d{4}&quot;)</code></pre>



<p class="wp-block-paragraph">上の例は「数字3桁＋ハイフン＋数字4桁」、つまり郵便番号の形式を取り出す数式です。正規表現の記号は、姉妹記事の<a href="https://mashukabu.com/excel-function-howto-use-regextest/">ExcelのREGEXTEST関数の使い方</a>で早見表にまとめていますので、あわせて確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc8">第3引数：戻り値モード（return_mode）</span></h3>



<p class="wp-block-paragraph">どのように抽出するかを数値で指定します。省略時は0です。</p>



<ul class="wp-block-list"><li><strong>0</strong>（省略時）：<strong>最初に一致した1つ</strong>を返す</li><li><strong>1</strong>：<strong>すべての一致</strong>を配列で返す（スピル）</li><li><strong>2</strong>：<strong>キャプチャグループ</strong>（括弧で囲んだ部分）を配列で返す</li></ul>



<p class="wp-block-paragraph">この第3引数こそがREGEXEXTRACT関数の真骨頂です。後ほど具体例で詳しく見ていきます。</p>



<h3 class="wp-block-heading"><span id="toc9">第4引数：大文字小文字の区別</span></h3>



<p class="wp-block-paragraph">大文字と小文字を区別するかを数値で指定します。省略すると0（区別する）です。</p>



<ul class="wp-block-list"><li><strong>0</strong>（省略時）：大文字と小文字を<strong>区別する</strong></li><li><strong>1</strong>：大文字と小文字を<strong>区別しない</strong></li></ul>



<p class="wp-block-paragraph">英字を含むパターンを使うときだけ気にすれば大丈夫ですよ。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(&quot;HELLO world&quot;, &quot;[a-z]+&quot;)      '&quot;world&quot;
=REGEXEXTRACT(&quot;HELLO world&quot;, &quot;[a-z]+&quot;, 0, 1) '&quot;HELLO&quot;</code></pre>



<h2 class="wp-block-heading"><span id="toc10">Excel REGEXEXTRACT関数の基本的な使い方</span></h2>



<p class="wp-block-paragraph">それでは実際に数式を組み立ててみましょう。</p>



<h3 class="wp-block-heading"><span id="toc11">文字列から最初の数字列を取り出す</span></h3>



<p class="wp-block-paragraph">もっともシンプルな例です。文字列に含まれる数字をまとめて抽出します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;d+&quot;)</code></pre>



<p class="wp-block-paragraph">A2が「商品コード12345番」なら結果は「12345」、「2026年4月」なら「2026」が返ります。<code>d+</code> は「数字1文字以上の繰り返し」を表します。</p>



<p class="wp-block-paragraph">抽出結果は常にテキスト型で返るので、数値として計算に使いたい場合はVALUE関数（文字列を数値に変換する関数）でラップしましょう。</p>



<pre class="wp-block-code"><code>=VALUE(REGEXEXTRACT(A2, &quot;d+&quot;))</code></pre>



<h3 class="wp-block-heading"><span id="toc12">郵便番号を抜き出す</span></h3>



<p class="wp-block-paragraph">住所の中から郵便番号だけを取り出す例です。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;d{3}-d{4}&quot;)</code></pre>



<p class="wp-block-paragraph">A2が「〒100-0001 東京都千代田区」なら「100-0001」が返ります。<code>{3}</code> は「直前の要素の3回繰り返し」を意味する記号です。</p>



<h3 class="wp-block-heading"><span id="toc13">本文からメールアドレスを抽出する</span></h3>



<p class="wp-block-paragraph">問い合わせメールの本文などからメールアドレスだけを抜き出す例です。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;[w.+-]+@[w.-]+.w+&quot;)</code></pre>



<p class="wp-block-paragraph">A2が「ご連絡は taro@example.com までお願いします」なら「taro@example.com」が返ります。実務レベルのメールアドレス抽出にはこれで十分ですよ。</p>



<h3 class="wp-block-heading"><span id="toc14">IFERRORでエラーを隠す</span></h3>



<p class="wp-block-paragraph">パターンが見つからないと <code>#N/A</code> エラーになります。IFERROR関数（エラー時に代替値を返す関数）でラップすると、空欄や任意のメッセージに置き換えられます。</p>



<pre class="wp-block-code"><code>=IFERROR(REGEXEXTRACT(A2, &quot;d+&quot;), &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">データにばらつきがある実務では、IFERRORとのセット使いをおすすめします。</p>



<h2 class="wp-block-heading"><span id="toc15">実践的な使い方・応用例</span></h2>



<h3 class="wp-block-heading"><span id="toc16">電話番号の市外局番だけを抽出する</span></h3>



<p class="wp-block-paragraph">電話番号の先頭部分だけを取り出す例です。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;^0d{1,4}&quot;)</code></pre>



<p class="wp-block-paragraph">「03-1234-5678」なら「03」、「0120-999-888」なら「0120」が返ります。<code>^</code> は「文字列の先頭」、<code>d{1,4}</code> は「数字1〜4桁」を意味します。</p>



<p class="wp-block-paragraph">市外局番と市内局番・加入者番号に分けたい場合は、次のキャプチャグループの例が便利です。</p>



<h3 class="wp-block-heading"><span id="toc17">URLからドメイン部分を取得する</span></h3>



<p class="wp-block-paragraph">URLからホスト名（ドメイン）だけを取り出す例です。キャプチャグループ（括弧 <code>()</code> で囲んだ部分）と第3引数 <code>2</code> を組み合わせます。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;https?://([^/]+)&quot;, 2)</code></pre>



<p class="wp-block-paragraph">A2が「https://www.mashukabu.com/excel-tips/」なら「www.mashukabu.com」が返ります。括弧で囲んだ <code>[^/]+</code>（スラッシュ以外の1文字以上）の部分だけが抽出されるイメージです。</p>



<p class="wp-block-paragraph">第3引数を <code>2</code> にすることで、括弧で囲んだキャプチャグループの中身だけを取り出せるのがポイントですよ。</p>



<h3 class="wp-block-heading"><span id="toc18">日付文字列から年・月・日を分離する</span></h3>



<p class="wp-block-paragraph">「2026-04-09」のような文字列を年・月・日の3つに分解する例です。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;(d{4})-(d{2})-(d{2})&quot;, 2)</code></pre>



<p class="wp-block-paragraph">この数式はスピル（数式が自動で配列に展開される機能）に対応していて、1つのセルに入力すると右方向に3つのセルへ「2026」「04」「09」が展開されます。</p>



<p class="wp-block-paragraph">括弧を3つ書いてそれぞれの部分をキャプチャしているのがコツです。スラッシュ区切りの日付なら次のように書きます。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;(d{4})/(d{1,2})/(d{1,2})&quot;, 2)</code></pre>



<p class="wp-block-paragraph">LEFT・MID・RIGHTで3つのセルに分解していた従来の方法と比べて、圧倒的にシンプルですよね。</p>



<h3 class="wp-block-heading"><span id="toc19">本文中のハッシュタグをすべて抽出する</span></h3>



<p class="wp-block-paragraph">SNS投稿の文字列からハッシュタグをまとめて取り出す例です。第3引数に <code>1</code> を指定すると、一致するものをすべて配列として返します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;#w+&quot;, 1)</code></pre>



<p class="wp-block-paragraph">A2が「今日の学び #Excel #REGEXEXTRACT #正規表現」なら、下方向に「#Excel」「#REGEXEXTRACT」「#正規表現」の3つがスピルします。ハッシュタグの棚卸しやSNS運用のレポートで重宝しますよ。</p>



<h3 class="wp-block-heading"><span id="toc20">メールアドレスからユーザー名とドメインを分ける</span></h3>



<p class="wp-block-paragraph">アットマークの前後を分けて取り出す例です。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;([w.+-]+)@([w.-]+)&quot;, 2)</code></pre>



<p class="wp-block-paragraph">A2が「taro@example.com」なら「taro」「example.com」の2つに分かれてスピルします。顧客リストのドメインごとの集計などに便利ですよ。</p>



<h2 class="wp-block-heading"><span id="toc21">よくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">REGEXEXTRACT関数で表示されるエラーと対処法をまとめました。</p>



<h3 class="wp-block-heading"><span id="toc22">#N/A エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 指定した正規表現パターンに一致する部分が見つからない。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: IFERROR関数で代替値を返すようにします。データ全体でパターンが統一されていない場合の定番対処です。</p>



<pre class="wp-block-code"><code>=IFERROR(REGEXEXTRACT(A2, &quot;d+&quot;), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">パターン自体が間違っていないか、サンプルデータで動作を確認してから本番データに適用するのがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc23">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 第2引数に無効な正規表現を指定した。または第1引数に数値型セルを直接渡した。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: 正規表現パターンを見直しましょう。特にエスケープ忘れ（<code>(</code> をそのまま使うなど）が多いので注意してください。数値セルを渡す場合はTEXT関数で文字列化します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(TEXT(A2, &quot;0&quot;), &quot;d+&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc24">#NAME? エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: REGEXEXTRACT関数に対応していないバージョンのExcelで使っている。または関数名のスペルミス。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: Microsoft 365のサブスクリプションで最新版にアップデートしてください。Excel 2019・2021・LTSC 2024などでは使えません。</p>



<h3 class="wp-block-heading"><span id="toc25">エラー一覧表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#N/A</td><td>パターン不一致</td><td>IFERRORで代替値</td></tr><tr><td>#VALUE!</td><td>無効な正規表現・非文字列</td><td>パターン見直し・TEXTで変換</td></tr><tr><td>#NAME?</td><td>非対応バージョン</td><td>Microsoft 365に更新</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">エラーが出ても原因は限られているので、落ち着いて確認すれば大丈夫ですよ。</p>



<h2 class="wp-block-heading"><span id="toc26">列全体に一括適用する方法（MAP関数との組み合わせ）</span></h2>



<p class="wp-block-paragraph">REGEXEXTRACT関数にセル範囲を直接渡すと <code>#VALUE!</code> になってしまいます。列全体に適用したい場合は、<strong>MAP関数</strong>（配列の各要素に関数を適用する関数）と組み合わせましょう。</p>



<pre class="wp-block-code"><code>=MAP(A2:A100, LAMBDA(x, IFERROR(REGEXEXTRACT(x, &quot;d+&quot;), &quot;&quot;)))</code></pre>



<p class="wp-block-paragraph">この数式はA2:A100の各セルに対してREGEXEXTRACTを実行し、エラーのセルは空欄に置き換えてくれます。結果はA2から下方向にスピルします。</p>



<h3 class="wp-block-heading"><span id="toc27">MAP + LAMBDAの書き方パターン</span></h3>



<pre class="wp-block-code"><code>=MAP(範囲, LAMBDA(変数名, IFERROR(REGEXEXTRACT(変数名, &quot;パターン&quot;), &quot;&quot;)))</code></pre>



<p class="wp-block-paragraph"><code>LAMBDA</code> の第1引数は変数名（任意）で、第2引数に実行する処理を書きます。次の例では電話番号列から市外局番だけを一括抽出しています。</p>



<pre class="wp-block-code"><code>=MAP(B2:B50, LAMBDA(tel, IFERROR(REGEXEXTRACT(tel, &quot;^0d{1,4}&quot;), &quot;&quot;)))</code></pre>



<p class="wp-block-paragraph">従来はフィルコピーや絶対参照の調整が必要でしたが、MAP関数を使えばセル1つに数式を書くだけで済みます。大量データの一括処理で特に重宝しますよ。</p>



<h2 class="wp-block-heading"><span id="toc28">REGEXTEST と組み合わせたフィルタリングパターン</span></h2>



<p class="wp-block-paragraph">「パターンに一致するものだけを別セルに抽出したい」という場面では、REGEXTEST関数（パターンに一致するか TRUE/FALSE を返す関数）とFILTER関数を組み合わせるのが効果的です。</p>



<h3 class="wp-block-heading"><span id="toc29">メールアドレスが含まれる行だけを絞り込む</span></h3>



<pre class="wp-block-code"><code>=FILTER(A2:A100, REGEXTEST(A2:A100, &quot;[w.+-]+@[w.-]+.w+&quot;))</code></pre>



<p class="wp-block-paragraph">この数式でA2:A100の中から、メールアドレスのパターンを含む行だけをすべて取り出せます。REGEXTEST が各行に TRUE/FALSE を返し、FILTER がTRUEの行だけを残す仕組みです。</p>



<h3 class="wp-block-heading"><span id="toc30">絞り込んだ上で抽出する2段階パターン</span></h3>



<p class="wp-block-paragraph">REGEXTESTで先に入力値を検証してから、REGEXEXTRACTで取り出す2段階パターンも実務でよく使います。</p>



<pre class="wp-block-code"><code>=IF(REGEXTEST(A2, &quot;[w.+-]+@[w.-]+.w+&quot;),
    REGEXEXTRACT(A2, &quot;[w.+-]+@[w.-]+.w+&quot;),
    &quot;メール形式ではありません&quot;)</code></pre>



<p class="wp-block-paragraph">同じパターンを2回書く必要がありますが、エラーメッセージを日本語で出せるのがIFERROR単独との違いです。パターンが長い場合はLET関数で変数化すると管理しやすくなります。</p>



<pre class="wp-block-code"><code>=LET(
  pattern, &quot;[w.+-]+@[w.-]+.w+&quot;,
  IF(REGEXTEST(A2, pattern), REGEXEXTRACT(A2, pattern), &quot;&quot;)
)</code></pre>



<p class="wp-block-paragraph"><code>LET</code> 関数（変数を定義して数式を整理できる関数）を使うとパターンを1か所で管理でき、正規表現を修正するときも1箇所直すだけで済みますよ。</p>



<h2 class="wp-block-heading"><span id="toc31">REGEXREPLACE との使い分けと連携</span></h2>



<p class="wp-block-paragraph">REGEXEXTRACTで「取り出せない」と感じたとき、REGEXREPLACEで「不要な部分を消す」発想に切り替えると解決できることがあります。</p>



<h3 class="wp-block-heading"><span id="toc32">取り出しにくいなら「削除」で代用する</span></h3>



<p class="wp-block-paragraph">たとえば「売上: ¥1,200」から数字とカンマだけを取り出したい場合、次の2つの書き方が考えられます。</p>



<p class="wp-block-paragraph"><strong>REGEXEXTRACTで取り出すアプローチ:</strong></p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;[d,]+&quot;)</code></pre>



<p class="wp-block-paragraph"><strong>REGEXREPLACEで不要部分を削除するアプローチ:</strong></p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[^d,]&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">後者は「数字とカンマ以外をすべて削除する」という発想です。<code>[^...]</code> は「括弧内の文字以外」を表す否定文字クラスです。複雑な抽出パターンを考えるより、削除するパターンのほうがシンプルに書けるケースも多いですよ。</p>



<h3 class="wp-block-heading"><span id="toc33">よく使う正規表現パターン早見表</span></h3>



<p class="wp-block-paragraph">実務でよく登場する正規表現パターンをまとめました。コピーしてそのまま使えます。</p>



<figure class="wp-block-table"><table><thead><tr><th>用途</th><th>パターン</th><th>例</th></tr></thead><tbody><tr><td>整数</td><td><code>d+</code></td><td>123</td></tr><tr><td>小数点あり数値</td><td><code>d+.?d*</code></td><td>1200.5</td></tr><tr><td>郵便番号</td><td><code>d{3}-d{4}</code></td><td>100-0001</td></tr><tr><td>固定電話</td><td><code>0d{1,4}-d{1,4}-d{4}</code></td><td>03-1234-5678</td></tr><tr><td>携帯電話</td><td><code>0[789]0-d{4}-d{4}</code></td><td>090-1234-5678</td></tr><tr><td>メールアドレス</td><td><code>[w.+-]+@[w.-]+.w+</code></td><td>user@example.com</td></tr><tr><td>URLドメイン</td><td><code>https?://([^/]+)</code></td><td>www.example.com</td></tr><tr><td>日付（ハイフン）</td><td><code>d{4}-d{2}-d{2}</code></td><td>2026-04-09</td></tr><tr><td>日本語の年月日</td><td><code>(d{4})年(d{1,2})月(d{1,2})日</code></td><td>2026年4月9日</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc34">REGEXTEST・REGEXREPLACEとの使い分け</span></h2>



<p class="wp-block-paragraph">REGEXEXTRACT関数には2つの姉妹関数があります。用途が異なるので、目的に合わせて使い分けましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>戻り値</th><th>用途</th></tr></thead><tbody><tr><td>REGEXTEST</td><td>TRUE / FALSE</td><td>パターンに一致するかを判定する</td></tr><tr><td>REGEXEXTRACT</td><td>一致した文字列</td><td>パターンに一致する部分を抜き出す</td></tr><tr><td>REGEXREPLACE</td><td>置換後の文字列</td><td>パターンに一致する部分を別の文字列に置き換える</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い分けのフローは次のとおりです。</p>



<ul class="wp-block-list"><li>「メールアドレスとして正しいか？」→ REGEXTEST</li><li>「本文からメールアドレスだけ抜き出したい」→ REGEXEXTRACT</li><li>「電話番号のハイフンを削除したい」→ REGEXREPLACE</li></ul>



<p class="wp-block-paragraph">3つとも同じPCRE2（Perl互換の正規表現）の書き方に対応しているので、パターンの知識はそのまま共通で使えます。REGEXTESTの詳しい使い方は<a href="https://mashukabu.com/excel-function-howto-use-regextest/">ExcelのREGEXTEST関数の使い方</a>でも解説していますので、あわせて読んでみてください。</p>



<h2 class="wp-block-heading"><span id="toc35">まとめ</span></h2>



<p class="wp-block-paragraph">REGEXEXTRACT関数は、Excelのセル上で正規表現を使って文字列を抜き出せる関数です。</p>



<p class="wp-block-paragraph">この記事のポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=REGEXEXTRACT(テキスト, 正規表現パターン, [戻り値モード], [大文字小文字の区別])</code></li><li>Microsoft 365のサブスクリプションが必要</li><li>第3引数 <code>0</code> で最初の一致、<code>1</code> で全一致、<code>2</code> でキャプチャグループを取得</li><li>キャプチャグループ（括弧）を使うと日付やURLを複数パートに分解できる</li><li>戻り値は常にテキスト型なので数値計算ではVALUE関数でラップする</li><li><code>#N/A</code> エラーはIFERROR関数で代替値を返すのが定番対処</li><li>姉妹関数のREGEXTEST（判定）・REGEXREPLACE（置換）と使い分けると便利</li></ul>



<p class="wp-block-paragraph">まずは <code>=REGEXEXTRACT("価格1200円", "d+")</code> のようなシンプルな式から試してみてください。LEFTやMIDを組み合わせた長い数式から解放されて、データ整理がぐっとラクになりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-regexextract/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのREGEXTEST関数の使い方｜正規表現でセルのパターンをチェック</title>
		<link>https://mashukabu.com/excel-function-howto-use-regextest/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-regextest/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 04:10:58 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[REGEXEXTRACT]]></category>
		<category><![CDATA[REGEXTEST関数]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[入力チェック]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5894</guid>

					<description><![CDATA[ExcelのREGEXTEST関数の使い方を初心者向けに解説。構文・引数（テキスト・パターン・大文字小文字区別）の基本から、メールアドレス・電話番号・郵便番号のバリデーション、数字のみチェックなど実務ユースケースを数式付きで紹介。正規表現の早見表、REGEXEXTRACT・REGEXREPLACEとの使い分け、エラー対処法もまとめました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「このセルに入っている文字列、メールアドレスとして正しい形式かな？」「電話番号の列に変な文字が混じっていないかチェックしたい」。データの入力チェックをしていると、こんな場面によく出くわしますよね。</p>



<p class="wp-block-paragraph">これまでのExcelでは、ISNUMBERやSEARCH関数を組み合わせたり、長い条件式を書いたりするしかありませんでした。かなり面倒ですよね。</p>



<p class="wp-block-paragraph">そんなときに便利なのがREGEXTEST関数です。正規表現を使って、セルの文字列が特定のパターンに一致するかを一発でチェックできます。</p>



<p class="wp-block-paragraph">この記事では、ExcelのREGEXTEST関数の使い方を基本から実務例まで解説します。正規表現の早見表や姉妹関数との使い分けもまとめましたので、ぜひ参考にしてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-3" checked><label class="toc-title" for="toc-checkbox-3">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのREGEXTEST関数とは？</a><ol><li><a href="#toc2" tabindex="0">どんなときに使う関数か</a></li><li><a href="#toc3" tabindex="0">利用条件（Microsoft 365が必須）</a></li></ol></li><li><a href="#toc4" tabindex="0">REGEXTEST関数の構文と引数</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">第1引数：テキスト</a></li><li><a href="#toc7" tabindex="0">第2引数：正規表現パターン</a></li><li><a href="#toc8" tabindex="0">第3引数：大文字小文字の区別</a></li></ol></li><li><a href="#toc9" tabindex="0">正規表現の基本パターン早見表</a><ol><li><a href="#toc10" tabindex="0">文字クラス</a></li><li><a href="#toc11" tabindex="0">位置と繰り返し</a></li></ol></li><li><a href="#toc12" tabindex="0">Excel REGEXTEST関数の基本的な使い方</a><ol><li><a href="#toc13" tabindex="0">文字列に数字が含まれるかチェックする</a></li><li><a href="#toc14" tabindex="0">数字のみで構成されているかチェックする</a></li><li><a href="#toc15" tabindex="0">大文字のアルファベットが含まれるかチェックする</a></li><li><a href="#toc16" tabindex="0">IF関数と組み合わせて判定結果を表示する</a></li></ol></li><li><a href="#toc17" tabindex="0">実践的な使い方・応用例</a><ol><li><a href="#toc18" tabindex="0">メールアドレスの形式をチェックする</a></li><li><a href="#toc19" tabindex="0">電話番号が数字とハイフンのみか確認する</a></li><li><a href="#toc20" tabindex="0">郵便番号の形式をチェックする</a></li><li><a href="#toc21" tabindex="0">セルに特定キーワードが含まれるか判定する</a></li><li><a href="#toc22" tabindex="0">FILTER関数と組み合わせて条件抽出する</a></li></ol></li><li><a href="#toc23" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc24" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc25" tabindex="0">#NAME? エラー</a></li><li><a href="#toc26" tabindex="0">意図したとおりにマッチしない</a></li></ol></li><li><a href="#toc27" tabindex="0">REGEXEXTRACT・REGEXREPLACEとの使い分け</a></li><li><a href="#toc28" tabindex="0">REGEXTEST vs ISNUMBER+FIND：どちらを使うべきか</a><ol><li><a href="#toc29" tabindex="0">比較：「@が含まれるか」を判定する</a></li><li><a href="#toc30" tabindex="0">どちらを使うか選ぶ基準</a></li></ol></li><li><a href="#toc31" tabindex="0">ビジネスデータ向け正規表現パターン集</a><ol><li><a href="#toc32" tabindex="0">日本ビジネスでよく使うパターン</a></li><li><a href="#toc33" tabindex="0">数値・金額のチェックに使えるパターン</a></li></ol></li><li><a href="#toc34" tabindex="0">FILTER関数との組み合わせ：一致行を一括抽出する</a><ol><li><a href="#toc35" tabindex="0">基本：特定パターンの行だけ抽出する</a></li><li><a href="#toc36" tabindex="0">応用：メールアドレスの不正データを抽出する</a></li><li><a href="#toc37" tabindex="0">応用：複数パターンのいずれかに一致する行を抽出する</a></li><li><a href="#toc38" tabindex="0">注意：FILTERと組み合わせるときは範囲のサイズを揃える</a></li></ol></li><li><a href="#toc39" tabindex="0">関連記事</a></li><li><a href="#toc40" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのREGEXTEST関数とは？</span></h2>



<p class="wp-block-paragraph">REGEXTEST関数は、<strong>セルの文字列が指定した正規表現パターンに一致するかを判定するExcelの関数</strong>です。読み方は「レジェックステスト」で、結果は TRUE または FALSE で返ります。</p>



<p class="wp-block-paragraph">2024年にMicrosoft 365へ追加された比較的新しい関数で、REGEXEXTRACT・REGEXREPLACEと合わせて「正規表現3関数」と呼ばれています。</p>



<p class="wp-block-paragraph">正規表現というと難しそうに感じますが、使うパターンは意外と限られています。この記事のサンプルをコピーすれば、実務で十分使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc2">どんなときに使う関数か</span></h3>



<p class="wp-block-paragraph">REGEXTEST関数は次のようなシーンで活躍します。</p>



<ul class="wp-block-list"><li>メールアドレスが正しい形式で入力されているかチェックしたいとき</li><li>電話番号や郵便番号が数字のみか確認したいとき</li><li>セルに特定のキーワードや文字パターンが含まれるか判定したいとき</li><li>FILTER関数と組み合わせて条件に合う行だけ抽出したいとき</li></ul>



<p class="wp-block-paragraph">従来のISNUMBER＋SEARCH構文と比べて、数式が圧倒的にスッキリしますよ。</p>



<h3 class="wp-block-heading"><span id="toc3">利用条件（Microsoft 365が必須）</span></h3>



<p class="wp-block-paragraph">REGEXTEST関数を使うには、Microsoft 365のサブスクリプションが必要です。Excel 2019やExcel 2021などの永続ライセンス版では使えません。</p>



<p class="wp-block-paragraph">対応環境は次のとおりです。</p>



<ul class="wp-block-list"><li>Excel for Microsoft 365（Windows / Mac）</li><li>Excel for the web</li></ul>



<p class="wp-block-paragraph">お使いのバージョンが対応しているか、事前に確認しておきましょう。バージョンが古いと <code>#NAME?</code> エラーになってしまいます。</p>



<h2 class="wp-block-heading"><span id="toc4">REGEXTEST関数の構文と引数</span></h2>



<h3 class="wp-block-heading"><span id="toc5">基本構文</span></h3>



<pre class="wp-block-code"><code>=REGEXTEST(テキスト, 正規表現パターン, [大文字小文字の区別])</code></pre>



<p class="wp-block-paragraph">カッコ内に、チェックしたいテキストと正規表現パターンを指定します。第3引数は省略可能です。</p>



<h3 class="wp-block-heading"><span id="toc6">第1引数：テキスト</span></h3>



<p class="wp-block-paragraph">チェック対象の文字列またはセル参照を指定します。</p>



<pre class="wp-block-code"><code>=REGEXTEST(&quot;abc123&quot;, &quot;[0-9]&quot;)
=REGEXTEST(A2, &quot;[0-9]&quot;)</code></pre>



<p class="wp-block-paragraph">直接文字列を入れる場合はダブルクォーテーションで囲みます。実務ではセル参照を使うのが一般的です。</p>



<p class="wp-block-paragraph">なお、セルが数値型の場合はそのままでは使えません。TEXT関数（数値を指定した書式の文字列に変換する関数）で文字列化してから渡しましょう。</p>



<h3 class="wp-block-heading"><span id="toc7">第2引数：正規表現パターン</span></h3>



<p class="wp-block-paragraph">マッチさせたい正規表現をダブルクォーテーションで囲んで指定します。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^[0-9]+$&quot;)</code></pre>



<p class="wp-block-paragraph">上の例は「A2が数字だけで構成されているか」をチェックする数式です。記号の意味は後ほど早見表で整理します。</p>



<h3 class="wp-block-heading"><span id="toc8">第3引数：大文字小文字の区別</span></h3>



<p class="wp-block-paragraph">大文字と小文字を区別するかを数値で指定します。省略すると0（区別する）が使われます。</p>



<ul class="wp-block-list"><li><strong>0</strong>（省略時）：大文字と小文字を<strong>区別する</strong></li><li><strong>1</strong>：大文字と小文字を<strong>区別しない</strong></li></ul>



<p class="wp-block-paragraph">英字を含むパターンを使うときだけ気にすれば大丈夫ですよ。</p>



<pre class="wp-block-code"><code>=REGEXTEST(&quot;ABC&quot;, &quot;[a-z]&quot;)      'FALSE（小文字のみにマッチ）
=REGEXTEST(&quot;ABC&quot;, &quot;[a-z]&quot;, 1)   'TRUE（区別しないのでマッチ）</code></pre>



<h2 class="wp-block-heading"><span id="toc9">正規表現の基本パターン早見表</span></h2>



<p class="wp-block-paragraph">REGEXTEST関数で使える正規表現は、PCRE2（Perl互換の正規表現）と呼ばれるものです。まずはよく使う記号だけ押さえておけば十分です。</p>



<h3 class="wp-block-heading"><span id="toc10">文字クラス</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th><th>例</th></tr></thead><tbody><tr><td><code>d</code></td><td>数字1文字（0〜9）</td><td><code>dd</code> は「12」にマッチ</td></tr><tr><td><code>D</code></td><td>数字以外の1文字</td><td><code>D</code> は「a」にマッチ</td></tr><tr><td><code>w</code></td><td>英数字またはアンダースコア</td><td><code>w+</code> は「hello_1」にマッチ</td></tr><tr><td><code>s</code></td><td>空白文字（半角スペース・タブ）</td><td><code>s</code> は半角スペースにマッチ</td></tr><tr><td><code>.</code></td><td>任意の1文字</td><td><code>a.c</code> は「abc」「a1c」にマッチ</td></tr><tr><td><code>[abc]</code></td><td>a・b・cのいずれか1文字</td><td><code>[abc]</code> は「a」にマッチ</td></tr><tr><td><code>[a-z]</code></td><td>a〜zのいずれか1文字</td><td>小文字の英字にマッチ</td></tr><tr><td><code>[0-9]</code></td><td>0〜9のいずれか1文字</td><td><code>d</code> と同じ</td></tr><tr><td><code>[^0-9]</code></td><td>0〜9以外の1文字</td><td>数字以外にマッチ</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc11">位置と繰り返し</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th><th>例</th></tr></thead><tbody><tr><td><code>^</code></td><td>文字列の先頭</td><td><code>^abc</code> は「abc」で始まる文字列</td></tr><tr><td><code>$</code></td><td>文字列の末尾</td><td><code>xyz$</code> は「xyz」で終わる文字列</td></tr><tr><td><code>*</code></td><td>直前の0回以上の繰り返し</td><td><code>a*</code> は「」「a」「aaa」にマッチ</td></tr><tr><td><code>+</code></td><td>直前の1回以上の繰り返し</td><td><code>a+</code> は「a」「aaa」にマッチ</td></tr><tr><td><code>?</code></td><td>直前の0回または1回</td><td><code>colou?r</code> は「color」「colour」</td></tr><tr><td><code>{n}</code></td><td>直前のn回の繰り返し</td><td><code>d{4}</code> は数字4桁</td></tr><tr><td><code>{n,m}</code></td><td>直前のn回以上m回以下</td><td><code>d{3,5}</code> は数字3〜5桁</td></tr><tr><td>`</td><td>`</td><td>または</td><td>`cat</td><td>dog` は「cat」か「dog」</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>特殊記号そのものを検索したいときは <code></code> でエスケープします。たとえば「.」をそのままチェックしたいなら <code>.</code> と書きます。</p></blockquote>



<p class="wp-block-paragraph"><code>^</code> と <code>$</code> を両方付けると「文字列全体が完全一致するか」をチェックできます。部分一致でよいなら両方とも省略しましょう。</p>



<h2 class="wp-block-heading"><span id="toc12">Excel REGEXTEST関数の基本的な使い方</span></h2>



<p class="wp-block-paragraph">それでは実際に数式を組み立ててみましょう。</p>



<h3 class="wp-block-heading"><span id="toc13">文字列に数字が含まれるかチェックする</span></h3>



<p class="wp-block-paragraph">もっともシンプルな例です。A列の文字列に数字が1文字でも含まれるかを判定します。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;d&quot;)</code></pre>



<p class="wp-block-paragraph">「abc」ならFALSE、「abc123」ならTRUEが返ります。<code>d</code> は「数字1文字」を表す記号です。</p>



<h3 class="wp-block-heading"><span id="toc14">数字のみで構成されているかチェックする</span></h3>



<p class="wp-block-paragraph">文字列全体が数字だけでできているかを判定します。郵便番号や電話番号の入力チェックに便利です。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^d+$&quot;)</code></pre>



<p class="wp-block-paragraph"><code>^</code> と <code>$</code> で文字列全体を挟み、<code>d+</code> で「数字1文字以上の繰り返し」を表しています。「123456」ならTRUE、「123-456」はハイフンが含まれるのでFALSEになります。</p>



<h3 class="wp-block-heading"><span id="toc15">大文字のアルファベットが含まれるかチェックする</span></h3>



<p class="wp-block-paragraph">パスワードチェックなどで使うパターンです。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;[A-Z]&quot;)</code></pre>



<p class="wp-block-paragraph">A2に「password」が入っていればFALSE、「Password」ならTRUEです。大文字が1文字でもあればTRUEを返します。</p>



<h3 class="wp-block-heading"><span id="toc16">IF関数と組み合わせて判定結果を表示する</span></h3>



<p class="wp-block-paragraph">TRUE・FALSEだけだとわかりにくいので、IF関数と組み合わせてメッセージで返すのがおすすめです。</p>



<pre class="wp-block-code"><code>=IF(REGEXTEST(A2, &quot;^d+$&quot;), &quot;数字のみ&quot;, &quot;数字以外を含む&quot;)</code></pre>



<p class="wp-block-paragraph">見た目もわかりやすくなり、チェック結果の確認がラクになりますよ。</p>



<h2 class="wp-block-heading"><span id="toc17">実践的な使い方・応用例</span></h2>



<h3 class="wp-block-heading"><span id="toc18">メールアドレスの形式をチェックする</span></h3>



<p class="wp-block-paragraph">顧客リストや問い合わせフォームのデータで、メールアドレスが正しい形式かをチェックする例です。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^[w.+-]+@[w-]+.[w.-]+$&quot;)</code></pre>



<p class="wp-block-paragraph">一見複雑ですが、分解すると次のような意味になります。</p>



<ul class="wp-block-list"><li><code>^[w.+-]+</code> ：先頭は英数字・ドット・プラス・ハイフンの1文字以上</li><li><code>@</code> ：アットマーク</li><li><code>[w-]+</code> ：ドメイン名部分（英数字とハイフン）</li><li><code>.[w.-]+$</code> ：ドット＋トップレベルドメインで終わる</li></ul>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXTESTの結果）</th></tr></thead><tbody><tr><td>taro@example.com</td><td>TRUE</td></tr><tr><td>hanako.suzuki@biz-tactics.co.jp</td><td>TRUE</td></tr><tr><td>info@example</td><td>FALSE</td></tr><tr><td>taro[at]example.com</td><td>FALSE</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">厳密なRFC準拠ではありませんが、実務レベルのチェックには十分です。IF関数と組み合わせて「要確認」のラベルを付けておくと、修正漏れを防げますよ。</p>



<h3 class="wp-block-heading"><span id="toc19">電話番号が数字とハイフンのみか確認する</span></h3>



<p class="wp-block-paragraph">電話番号欄に余計な文字（全角やスペース）が入っていないかチェックする例です。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^[0-9-]+$&quot;)</code></pre>



<p class="wp-block-paragraph">「03-1234-5678」はTRUE、「03-1234-5678（内線1）」は括弧が含まれるのでFALSEになります。</p>



<p class="wp-block-paragraph">ハイフンなしの数字のみに統一したい場合は次の数式を使います。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^d{10,11}$&quot;)</code></pre>



<p class="wp-block-paragraph"><code>d{10,11}</code> は「数字10桁〜11桁」を意味します。携帯番号（11桁）と固定電話（10桁）の両方に対応できます。</p>



<h3 class="wp-block-heading"><span id="toc20">郵便番号の形式をチェックする</span></h3>



<p class="wp-block-paragraph">日本の郵便番号（7桁、ハイフン区切り）のチェックです。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^d{3}-d{4}$&quot;)</code></pre>



<p class="wp-block-paragraph">「100-0001」はTRUE、「1000001」や「100-001」はFALSEになります。ハイフンの位置までしっかりチェックできるのがポイントです。</p>



<h3 class="wp-block-heading"><span id="toc21">セルに特定キーワードが含まれるか判定する</span></h3>



<p class="wp-block-paragraph">複数のキーワードのいずれかが含まれるかを判定する例です。「緊急」「至急」「重要」のどれかが本文に含まれるメールを検出するイメージです。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;緊急|至急|重要&quot;)</code></pre>



<p class="wp-block-paragraph"><code>|</code>（パイプ）は「または」を意味します。IF関数と組み合わせれば、優先度の自動仕分けにも使えますよ。</p>



<pre class="wp-block-code"><code>=IF(REGEXTEST(A2, &quot;緊急|至急|重要&quot;), &quot;優先対応&quot;, &quot;&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc22">FILTER関数と組み合わせて条件抽出する</span></h3>



<p class="wp-block-paragraph">REGEXTEST関数のすごいところは、FILTER関数と組み合わせて行単位の抽出ができる点です。</p>



<p class="wp-block-paragraph">A2:B100のデータから、A列が「東京」で始まる行だけを抽出する例です。</p>



<pre class="wp-block-code"><code>=FILTER(A2:B100, REGEXTEST(A2:A100, &quot;^東京&quot;))</code></pre>



<p class="wp-block-paragraph">スピル（数式が自動で配列に展開される機能）に対応しているので、1つの数式で複数行を一気に絞り込めます。「東京都」「東京支店」などを一括で拾えますよ。</p>



<h2 class="wp-block-heading"><span id="toc23">よくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">REGEXTEST関数で表示されるエラーと対処法をまとめました。</p>



<h3 class="wp-block-heading"><span id="toc24">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 第2引数に無効な正規表現を指定した。または第1引数に数値や日付などの非文字列を直接渡した。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: 正規表現パターンを見直しましょう。特にエスケープ忘れ（<code>(</code> をそのまま使うなど）が多いので注意してください。数値セルを渡す場合はTEXT関数で文字列化しましょう。</p>



<pre class="wp-block-code"><code>=REGEXTEST(TEXT(A2, &quot;0&quot;), &quot;^d+$&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc25">#NAME? エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: REGEXTEST関数に対応していないバージョンのExcelで使っている。または関数名のスペルミス。</p>



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



<h3 class="wp-block-heading"><span id="toc26">意図したとおりにマッチしない</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 日付セルが対象になっている。日付はExcel内部ではシリアル値（数値）として扱われるため、表示形式とは異なる値が渡されます。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: TEXT関数で文字列化してから渡します。</p>



<pre class="wp-block-code"><code>=REGEXTEST(TEXT(A2, &quot;yyyy/mm/dd&quot;), &quot;^2026&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>無効な正規表現・非文字列</td><td>パターン見直し・TEXTで変換</td></tr><tr><td>#NAME?</td><td>非対応バージョン</td><td>Microsoft 365に更新</td></tr><tr><td>意図しないFALSE</td><td>日付シリアル値が対象</td><td>TEXT関数で文字列化</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">エラーが出ても原因は限られているので、落ち着いて確認すれば大丈夫ですよ。</p>



<h2 class="wp-block-heading"><span id="toc27">REGEXEXTRACT・REGEXREPLACEとの使い分け</span></h2>



<p class="wp-block-paragraph">REGEXTEST関数には2つの姉妹関数があります。用途が異なるので、目的に合わせて使い分けましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>戻り値</th><th>用途</th></tr></thead><tbody><tr><td>REGEXTEST</td><td>TRUE / FALSE</td><td>パターンに一致するかを判定する</td></tr><tr><td>REGEXEXTRACT</td><td>一致した文字列</td><td>パターンに一致する部分を抜き出す</td></tr><tr><td>REGEXREPLACE</td><td>置換後の文字列</td><td>パターンに一致する部分を別の文字列に置き換える</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い分けのイメージは次のとおりです。</p>



<ul class="wp-block-list"><li>「メールアドレスとして正しいか？」→ REGEXTEST</li><li>「本文からメールアドレスだけ抜き出したい」→ REGEXEXTRACT</li><li>「電話番号のハイフンを削除したい」→ REGEXREPLACE</li></ul>



<p class="wp-block-paragraph">3つとも同じPCRE2の正規表現を使うので、パターンの書き方は共通です。REGEXTESTで覚えた知識はそのまま他の2関数でも活きますよ。</p>



<h2 class="wp-block-heading"><span id="toc28">REGEXTEST vs ISNUMBER+FIND：どちらを使うべきか</span></h2>



<p class="wp-block-paragraph">REGEXTEST関数が使える環境であれば、従来のISNUMBER+FINDの組み合わせよりも積極的にREGEXTESTを選ぶべきです。両者の違いを整理します。</p>



<h3 class="wp-block-heading"><span id="toc29">比較：「@が含まれるか」を判定する</span></h3>



<p class="wp-block-paragraph"><strong>ISNUMBER+FIND（従来の方法）</strong></p>



<pre class="wp-block-code"><code>=ISNUMBER(FIND(&quot;@&quot;, A2))</code></pre>



<p class="wp-block-paragraph"><strong>REGEXTEST（新しい方法）</strong></p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;@&quot;)</code></pre>



<p class="wp-block-paragraph">単純な部分一致なら見た目の差は小さいですが、「メールアドレスの形式として正しいか」という少し複雑な条件になると差が広がります。</p>



<p class="wp-block-paragraph"><strong>ISNUMBER+FINDで複数条件（ハイフン区切り数字かどうか）</strong></p>



<pre class="wp-block-code"><code>=AND(ISNUMBER(FIND(&quot;-&quot;, A2)), ISNUMBER(VALUE(SUBSTITUTE(A2, &quot;-&quot;, &quot;&quot;))))</code></pre>



<p class="wp-block-paragraph">かなり読みにくくなります。</p>



<p class="wp-block-paragraph"><strong>REGEXTESTで同じ条件</strong></p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^d+-d+$&quot;)</code></pre>



<p class="wp-block-paragraph">シンプルで意図が一目瞭然です。</p>



<h3 class="wp-block-heading"><span id="toc30">どちらを使うか選ぶ基準</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>条件</th><th>推奨</th></tr></thead><tbody><tr><td>Microsoft 365を使っている</td><td>REGEXTEST</td></tr><tr><td>完全一致・部分一致だけの単純チェック</td><td>どちらでも可</td></tr><tr><td>複数条件・パターンが複雑</td><td>REGEXTEST一択</td></tr><tr><td>Excel 2019・2021など永続ライセンス</td><td>ISNUMBER+FIND</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ISNUMBER+FINDは「@が含まれるか」のような部分一致に限ればシンプルで動きますが、ハイフンの位置・桁数・先頭末尾の制約などを加えるたびにネストが深くなっていきます。Microsoft 365ユーザーはREGEXTESTに統一するほうが保守しやすいです。</p>



<h2 class="wp-block-heading"><span id="toc31">ビジネスデータ向け正規表現パターン集</span></h2>



<p class="wp-block-paragraph">実務でよく使うパターンをまとめました。パターンをそのままコピーして使えます。</p>



<h3 class="wp-block-heading"><span id="toc32">日本ビジネスでよく使うパターン</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>チェック内容</th><th>正規表現パターン</th><th>数式例</th></tr></thead><tbody><tr><td>郵便番号（〒123-4567形式）</td><td><code>^d{3}-d{4}$</code></td><td><code>=REGEXTEST(A2, "^d{3}-d{4}$")</code></td></tr><tr><td>郵便番号（ハイフンなし7桁）</td><td><code>^d{7}$</code></td><td><code>=REGEXTEST(A2, "^d{7}$")</code></td></tr><tr><td>固定電話（市外局番含む）</td><td><code>^d{2,4}-d{2,4}-d{4}$</code></td><td><code>=REGEXTEST(A2, "^d{2,4}-d{2,4}-d{4}$")</code></td></tr><tr><td>携帯電話（090/080/070）</td><td><code>^0[789]0-d{4}-d{4}$</code></td><td><code>=REGEXTEST(A2, "^0[789]0-d{4}-d{4}$")</code></td></tr><tr><td>メールアドレス（簡易）</td><td><code>^[w.+-]+@[w-]+.[w.-]+$</code></td><td><code>=REGEXTEST(A2, "^[w.+-]+@[w-]+.[w.-]+$")</code></td></tr><tr><td>数字のみ（任意桁）</td><td><code>^d+$</code></td><td><code>=REGEXTEST(A2, "^d+$")</code></td></tr><tr><td>半角英数字のみ</td><td><code>^[a-zA-Z0-9]+$</code></td><td><code>=REGEXTEST(A2, "^[a-zA-Z0-9]+$")</code></td></tr><tr><td>全角文字が含まれる</td><td><code>[^x00-x7F]</code></td><td><code>=REGEXTEST(A2, "[^x00-x7F]")</code></td></tr><tr><td>スペース（半角・全角）が含まれる</td><td><code>[s　]</code></td><td><code>=REGEXTEST(A2, "[s　]")</code></td></tr><tr><td>URLらしい文字列</td><td><code>https?://[w/:%#$&?()~.=+-]+</code></td><td><code>=REGEXTEST(A2, "https?://")</code></td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>パターンをセルに入力して参照する方法もあります。<code>=REGEXTEST(A2, B2)</code> のように第2引数にパターンが入ったセルを渡せるので、複数チェック条件を切り替えながら試したいときに便利です。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc33">数値・金額のチェックに使えるパターン</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>チェック内容</th><th>正規表現パターン</th><th>メモ</th></tr></thead><tbody><tr><td>整数（符号なし）</td><td><code>^d+$</code></td><td>「123」はTRUE、「1.5」はFALSE</td></tr><tr><td>小数点あり数値</td><td><code>^d+(.d+)?$</code></td><td>「12.5」もTRUEになる</td></tr><tr><td>符号付き整数</td><td><code>^[+-]?d+$</code></td><td>「-100」「+50」もTRUE</td></tr><tr><td>カンマ区切り金額</td><td><code>^d{1,3}(,d{3})*$</code></td><td>「1,234,567」にマッチ</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc34">FILTER関数との組み合わせ：一致行を一括抽出する</span></h2>



<p class="wp-block-paragraph">REGEXTEST関数はTRUE/FALSEを返すため、FILTER関数の条件（第2引数）にそのまま使えます。これが特に便利です。</p>



<h3 class="wp-block-heading"><span id="toc35">基本：特定パターンの行だけ抽出する</span></h3>



<pre class="wp-block-code"><code>=FILTER(A2:C100, REGEXTEST(A2:A100, &quot;^東京&quot;))</code></pre>



<p class="wp-block-paragraph">A列が「東京」で始まる行（東京都・東京支店・東京本社など）をすべて抽出します。FILTER関数はスピルに対応しているので、結果が複数行あっても自動で展開されます。</p>



<h3 class="wp-block-heading"><span id="toc36">応用：メールアドレスの不正データを抽出する</span></h3>



<p class="wp-block-paragraph">チェック対象の列でFALSEになった行（＝不正データ）を抽出したいときは、条件を否定（NOT）します。</p>



<pre class="wp-block-code"><code>=FILTER(A2:B100, NOT(REGEXTEST(A2:A100, &quot;^[w.+-]+@[w-]+.[w.-]+$&quot;)))</code></pre>



<p class="wp-block-paragraph"><code>NOT()</code> でREGEXTESTの結果を反転させることで、「メールアドレス形式でない行」を一覧できます。大量のリストを一発でクレンジングするのに役立ちます。</p>



<h3 class="wp-block-heading"><span id="toc37">応用：複数パターンのいずれかに一致する行を抽出する</span></h3>



<p class="wp-block-paragraph">「<code>|</code>（または）」を使えば、複数のキーワードを含む行を一度に絞り込めます。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D100, REGEXTEST(B2:B100, &quot;未払い|延滞|督促&quot;))</code></pre>



<p class="wp-block-paragraph">B列（備考欄など）に「未払い」「延滞」「督促」のいずれかが含まれる行を抽出します。ステータス管理や案件仕分けに使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc38">注意：FILTERと組み合わせるときは範囲のサイズを揃える</span></h3>



<p class="wp-block-paragraph">REGEXTEST の第1引数（範囲）と FILTER の第1引数（範囲）は、行数を必ず一致させます。ずれていると <code>#VALUE!</code> エラーになります。</p>



<pre class="wp-block-code"><code>' 正しい例（どちらも2〜100行目）
=FILTER(A2:C100, REGEXTEST(A2:A100, &quot;d&quot;))

' 誤った例（FILTERは2〜100行目、REGEXTESTは2〜50行目でずれている）
=FILTER(A2:C100, REGEXTEST(A2:A50, &quot;d&quot;))</code></pre>



<h2 class="wp-block-heading"><span id="toc39">関連記事</span></h2>



<p class="wp-block-paragraph">REGEXTEST関数と組み合わせて使える関数や、関連するパターンチェックの記事もあわせてご覧ください。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-regexextract/">ExcelのREGEXEXTRACT関数の使い方｜正規表現で文字列を抽出する</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-regexreplace/">【Excel】REGEXREPLACE関数の使い方｜正規表現で文字列を置換する実務例10選</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-filter/">【Excel】FILTER関数の使い方完全ガイド – 初心者から中級者まで役立つデータ抽出テクニック</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-isnumber/">ExcelのISNUMBER関数の使い方｜数値と文字列型数字の見分け方も解説</a></li></ul>



<h2 class="wp-block-heading"><span id="toc40">まとめ</span></h2>



<p class="wp-block-paragraph">REGEXTEST関数は、Excelのセル上で正規表現を使ったパターンチェックができる関数です。</p>



<p class="wp-block-paragraph">この記事のポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=REGEXTEST(テキスト, 正規表現パターン, [大文字小文字の区別])</code></li><li>Microsoft 365のサブスクリプションが必要</li><li>戻り値はTRUE / FALSEのシンプルな形</li><li>第3引数を1にすると大文字小文字を区別しない</li><li>正規表現は <code>d</code>（数字）<code>^</code> <code>$</code>（先頭・末尾）あたりから覚えるのがおすすめ</li><li>メールアドレス・電話番号・郵便番号の形式チェックに便利</li><li>FILTER関数と組み合わせると条件抽出にも使える</li><li>姉妹関数にREGEXEXTRACT（抽出）とREGEXREPLACE（置換）がある</li></ul>



<p class="wp-block-paragraph">まずは <code>=REGEXTEST("123abc", "d")</code> のようなシンプルな式から試してみてください。データクレンジングや入力チェックの作業がぐっとラクになりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-regextest/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Excel】REGEXREPLACE関数の使い方｜正規表現で文字列を置換する実務例10選</title>
		<link>https://mashukabu.com/excel-function-howto-use-regexreplace/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-regexreplace/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 04:10:55 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[REGEXREPLACE関数]]></category>
		<category><![CDATA[キャプチャグループ]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[文字列置換]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5892</guid>

					<description><![CDATA[ExcelのREGEXREPLACE関数の使い方を構文から実務応用まで解説。電話番号のハイフン除去、メール伏せ字、HTMLタグ削除、キャプチャグループ$1$2による並び替え、SUBSTITUTEとの使い分け、エラー対処までコピペで動く数式付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「電話番号のハイフンを一気に消したい」「メールアドレスのドメインだけ伏せ字にしたい」。データ整理をしていると、こういう一括置換の場面はよくありますよね。</p>



<p class="wp-block-paragraph">これまでのExcelでは、SUBSTITUTE関数を何重にもネストしたり、マクロを書いたりするしかありませんでした。数式が長くなって、後から見直すのも一苦労です。</p>



<p class="wp-block-paragraph">そんな悩みを一発で解決してくれるのがREGEXREPLACE関数です。正規表現を使って、セルの文字列をパターン指定でまとめて置換できます。</p>



<p class="wp-block-paragraph">この記事では、ExcelのREGEXREPLACE関数の使い方を、構文から実務応用までまるごと解説します。コピペで動く数式とビフォーアフター表、キャプチャグループ（$1 $2）による並び替え、SUBSTITUTE関数との使い分け、思い通りに動かないときのデバッグ手順まで網羅しましたので、ぜひ参考にしてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのREGEXREPLACE関数とは？正規表現で文字列を一括置換できる関数</a><ol><li><a href="#toc2" tabindex="0">どんな業務シーンで使うのか</a></li><li><a href="#toc3" tabindex="0">利用条件（Microsoft 365が必須）</a></li></ol></li><li><a href="#toc4" tabindex="0">REGEXREPLACE関数の構文と5つの引数</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">第1引数：テキスト</a></li><li><a href="#toc7" tabindex="0">第2引数：正規表現パターン</a></li><li><a href="#toc8" tabindex="0">第3引数：置換文字列</a></li><li><a href="#toc9" tabindex="0">第4引数：出現位置（occurrence）</a></li><li><a href="#toc10" tabindex="0">第5引数：大文字小文字の区別（case_sensitivity）</a></li></ol></li><li><a href="#toc11" tabindex="0">正規表現の基本パターン早見表（Excel REGEXREPLACE 対応）</a><ol><li><a href="#toc12" tabindex="0">文字種を表す記号</a></li><li><a href="#toc13" tabindex="0">量を表す記号（量指定子）</a></li><li><a href="#toc14" tabindex="0">位置・選択を表す記号</a></li></ol></li><li><a href="#toc15" tabindex="0">【基本編】REGEXREPLACE関数の使い方をコピペ数式で学ぶ</a><ol><li><a href="#toc16" tabindex="0">電話番号からハイフンを除去する</a></li><li><a href="#toc17" tabindex="0">数字以外を一括削除する</a></li><li><a href="#toc18" tabindex="0">余分な空白をまとめて削除する</a></li><li><a href="#toc19" tabindex="0">連続する空白を半角スペース1つにまとめる</a></li></ol></li><li><a href="#toc20" tabindex="0">【実務編】REGEXREPLACE関数の応用例7選</a><ol><li><a href="#toc21" tabindex="0">メールアドレスのドメイン部分をマスキングする</a></li><li><a href="#toc22" tabindex="0">HTMLタグを削除して本文だけ取り出す</a></li><li><a href="#toc23" tabindex="0">全角・半角・長音記号のハイフンをまとめて除去する</a></li><li><a href="#toc24" tabindex="0">日付の区切り文字を統一する</a></li><li><a href="#toc25" tabindex="0">全角スペースと半角スペースを統一する</a></li><li><a href="#toc26" tabindex="0">文字列の先頭・末尾の不要文字を削除する</a></li><li><a href="#toc27" tabindex="0">動的配列で列全体を一括処理する</a></li><li><a href="#toc28" tabindex="0">郵便番号を「123-4567」の形に統一する</a></li><li><a href="#toc29" tabindex="0">住所から都道府県名を取り除く</a></li><li><a href="#toc30" tabindex="0">社員番号の表記揺れを「EMP-001」に統一する</a></li></ol></li><li><a href="#toc31" tabindex="0">キャプチャグループ（ ）で並び順を入れ替える</a><ol><li><a href="#toc32" tabindex="0">「姓 名」を「名 姓」に入れ替える</a></li><li><a href="#toc33" tabindex="0">日付フォーマット yyyy/mm/dd を dd-mm-yyyy に変換</a></li><li><a href="#toc34" tabindex="0">電話番号にハイフンを付け直す</a></li></ol></li><li><a href="#toc35" tabindex="0">LAMBDA・LET関数でよく使うパターンを使い回す</a><ol><li><a href="#toc36" tabindex="0">LET関数で入力をまとめて読みやすくする</a></li><li><a href="#toc37" tabindex="0">複数パターンを段階的に連続置換する</a></li><li><a href="#toc38" tabindex="0">LAMBDA関数で「自分専用の関数」を作る</a></li></ol></li><li><a href="#toc39" tabindex="0">REGEXREPLACEとSUBSTITUTE関数の使い分け（4つの軸で比較）</a><ol><li><a href="#toc40" tabindex="0">速度・パフォーマンス</a></li><li><a href="#toc41" tabindex="0">可読性・メンテナンス性</a></li><li><a href="#toc42" tabindex="0">バージョン互換性</a></li><li><a href="#toc43" tabindex="0">使い分け早見表</a></li></ol></li><li><a href="#toc44" tabindex="0">数式が思い通りに動かないときのデバッグ手順</a><ol><li><a href="#toc45" tabindex="0">REGEXTEST関数で段階的にパターンを検証する</a></li><li><a href="#toc46" tabindex="0">REGEXEXTRACT関数で抽出結果を確認する</a></li><li><a href="#toc47" tabindex="0">貪欲マッチを最短マッチに変える</a></li></ol></li><li><a href="#toc48" tabindex="0">REGEXREPLACE関数のよくあるエラーと対処法</a><ol><li><a href="#toc49" tabindex="0">#VALUE! エラー：無効な正規表現・非文字列</a></li><li><a href="#toc50" tabindex="0">#NAME? エラー：非対応バージョン</a></li><li><a href="#toc51" tabindex="0">置換結果が意図と違う：貪欲マッチ・エスケープ</a></li></ol></li><li><a href="#toc52" tabindex="0">正規表現3関数（REGEXTEST / REGEXEXTRACT / REGEXREPLACE）の使い分け</a></li><li><a href="#toc53" tabindex="0">よくある質問（FAQ）</a></li><li><a href="#toc54" tabindex="0">まとめ：REGEXREPLACE関数で数式デバッグから解放されよう</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのREGEXREPLACE関数とは？正規表現で文字列を一括置換できる関数</span></h2>



<p class="wp-block-paragraph">REGEXREPLACE関数は、<strong>セルの文字列のうち正規表現パターンに一致した部分を、別の文字列に置換するExcelの関数</strong>です。読み方は「レジェックスリプレイス」です。</p>



<p class="wp-block-paragraph">2024年にMicrosoft 365へ追加された比較的新しい関数で、REGEXTEST・REGEXEXTRACTと合わせて「正規表現3関数」と呼ばれています。3関数とも同じPCRE2（Perl互換の正規表現）を採用しているので、覚えた書き方をそのまま使い回せますよ。</p>



<p class="wp-block-paragraph">固定の文字列を1種類だけ置換するならSUBSTITUTE関数で十分ですが、「数字をまとめて消したい」「特定パターンの部分を伏せ字にしたい」「複数の記号を1回の数式で削除したい」といったケースで、REGEXREPLACEが真価を発揮します。</p>



<h3 class="wp-block-heading"><span id="toc2">どんな業務シーンで使うのか</span></h3>



<p class="wp-block-paragraph">REGEXREPLACE関数は次のような業務シーンで活躍します。</p>



<ul class="wp-block-list"><li>電話番号・郵便番号からハイフンを一括で取り除きたいとき</li><li>メールアドレスや個人情報の一部を伏せ字にマスキングしたいとき</li><li>余分な空白・記号・改行をまとめて除去してデータクレンジングしたいとき</li><li>HTMLタグを取り除いて本文だけ取り出したいとき</li><li>日付の区切り文字を統一したい、姓と名を入れ替えたいとき</li></ul>



<p class="wp-block-paragraph">従来のSUBSTITUTE多重ネストと比べると、数式が見違えるほどスッキリします。後から見直す自分への思いやりにもなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc3">利用条件（Microsoft 365が必須）</span></h3>



<p class="wp-block-paragraph">ExcelのREGEXREPLACE関数を使うには、Microsoft 365のサブスクリプションが必要です。Excel 2019やExcel 2021、Excel 2024などの永続ライセンス版では使えません。</p>



<p class="wp-block-paragraph">対応環境は次のとおりです。</p>



<ul class="wp-block-list"><li>Excel for Microsoft 365（Windows / Mac）</li><li>Excel for the web</li></ul>



<p class="wp-block-paragraph">お使いのバージョンが対応していないと <code>#NAME?</code> エラーになります。動かないときはまずバージョンを確認してみてくださいね。</p>



<h2 class="wp-block-heading"><span id="toc4">REGEXREPLACE関数の構文と5つの引数</span></h2>



<h3 class="wp-block-heading"><span id="toc5">基本構文</span></h3>



<pre class="wp-block-code"><code>=REGEXREPLACE(テキスト, 正規表現パターン, 置換文字列, [出現位置], [大文字小文字の区別])</code></pre>



<p class="wp-block-paragraph">必須の引数は最初の3つで、後ろの2つは省略できます。それぞれ詳しく見ていきましょう。</p>



<h3 class="wp-block-heading"><span id="toc6">第1引数：テキスト</span></h3>



<p class="wp-block-paragraph">置換対象となる文字列、またはセル参照を指定します。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(&quot;03-1234-5678&quot;, &quot;-&quot;, &quot;&quot;)
=REGEXREPLACE(A2, &quot;-&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">直接文字列を入れる場合はダブルクォーテーションで囲みます。実務ではセル参照を使うことがほとんどです。</p>



<p class="wp-block-paragraph">セルが数値型のとき（例: 電話番号を数値で入力した列）は <code>#VALUE!</code> エラーになります。<code>TEXT(A2, "0")</code> のように文字列化してから渡しましょう。</p>



<h3 class="wp-block-heading"><span id="toc7">第2引数：正規表現パターン</span></h3>



<p class="wp-block-paragraph">置換したい部分を表す正規表現を、ダブルクォーテーションで囲んで指定します。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;d&quot;, &quot;*&quot;)</code></pre>



<p class="wp-block-paragraph">上の例は「A2の中の数字を1文字ずつアスタリスクに置き換える」という意味です。<code>d</code> は「数字1文字」を表す特殊記号ですね。</p>



<h3 class="wp-block-heading"><span id="toc8">第3引数：置換文字列</span></h3>



<p class="wp-block-paragraph">マッチした部分を何に置き換えるかを指定します。空文字列 <code>""</code> を指定すれば「削除」と同じ意味になります。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;s&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">この例ではA2のすべての空白文字（半角・全角・タブ・改行）を削除します。<code>s</code> は「空白文字」を表すパターンです。</p>



<h3 class="wp-block-heading"><span id="toc9">第4引数：出現位置（occurrence）</span></h3>



<p class="wp-block-paragraph">何番目のマッチから置換するかを数値で指定します。省略すると0になり、<strong>すべてのマッチ</strong>を置換します。</p>



<ul class="wp-block-list"><li><strong>0</strong>（省略時）：すべてのマッチを置換</li><li><strong>1</strong>：1番目のマッチだけを置換</li><li><strong>2</strong>：2番目のマッチだけを置換</li></ul>



<pre class="wp-block-code"><code>=REGEXREPLACE(&quot;a-b-c-d&quot;, &quot;-&quot;, &quot;/&quot;, 0)  '結果: a/b/c/d
=REGEXREPLACE(&quot;a-b-c-d&quot;, &quot;-&quot;, &quot;/&quot;, 2)  '結果: a-b/c-d</code></pre>



<p class="wp-block-paragraph">「最初の1箇所だけ」「3番目だけ」のようにピンポイントで置換できる、意外と便利な引数です。指定した番号に該当するマッチがない場合は、元のテキストがそのまま返ります。</p>



<h3 class="wp-block-heading"><span id="toc10">第5引数：大文字小文字の区別（case_sensitivity）</span></h3>



<p class="wp-block-paragraph">英字を含むパターンで大文字と小文字を区別するかを指定します。省略すると0（区別する）です。</p>



<ul class="wp-block-list"><li><strong>0</strong>（省略時）：大文字と小文字を<strong>区別する</strong></li><li><strong>1</strong>：大文字と小文字を<strong>区別しない</strong></li></ul>



<pre class="wp-block-code"><code>=REGEXREPLACE(&quot;ABC abc&quot;, &quot;[a-z]&quot;, &quot;*&quot;)      '結果: ABC ***
=REGEXREPLACE(&quot;ABC abc&quot;, &quot;[a-z]&quot;, &quot;*&quot;, , 1) '結果: *** ***</code></pre>



<p class="wp-block-paragraph">第4引数を省略して第5引数だけ指定したいときは、コンマだけ書いて飛ばします（<code>, ,</code> のように）。</p>



<h2 class="wp-block-heading"><span id="toc11">正規表現の基本パターン早見表（Excel REGEXREPLACE 対応）</span></h2>



<p class="wp-block-paragraph">REGEXREPLACE関数で使える正規表現はPCRE2（Perl互換の正規表現）です。REGEXTEST・REGEXEXTRACTとも共通なので、一度覚えれば3関数すべてで使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">文字種を表す記号</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th><th>例</th></tr></thead><tbody><tr><td><code>d</code></td><td>数字1文字（0〜9）</td><td><code>d+</code> で「123」「2026」</td></tr><tr><td><code>D</code></td><td>数字以外の1文字</td><td><code>D+</code> で「ABC」「あ」</td></tr><tr><td><code>w</code></td><td>英数字またはアンダースコア</td><td><code>w+</code> で単語</td></tr><tr><td><code>W</code></td><td>単語文字以外</td><td>記号・空白など</td></tr><tr><td><code>s</code></td><td>空白文字（半角スペース・タブ・改行）</td><td>連続スペースの整形</td></tr><tr><td><code>S</code></td><td>空白以外の文字</td><td>単語の塊</td></tr><tr><td><code>.</code></td><td>任意の1文字（改行を除く）</td><td>ワイルドカード代わり</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc13">量を表す記号（量指定子）</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th></tr></thead><tbody><tr><td><code>*</code></td><td>直前の0回以上の繰り返し</td></tr><tr><td><code>+</code></td><td>直前の1回以上の繰り返し</td></tr><tr><td><code>?</code></td><td>直前の0または1回</td></tr><tr><td><code>{n}</code></td><td>直前のn回の繰り返し</td></tr><tr><td><code>{n,m}</code></td><td>直前のn〜m回の繰り返し</td></tr><tr><td><code>*?</code> <code>+?</code></td><td>最短一致（後述の貪欲マッチ対策）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc14">位置・選択を表す記号</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th></tr></thead><tbody><tr><td><code>^</code></td><td>文字列の先頭</td></tr><tr><td><code>$</code></td><td>文字列の末尾</td></tr><tr><td><code></td><td></code></td><td>または（OR）</td></tr><tr><td><code>[abc]</code></td><td>a・b・cのいずれか1文字</td></tr><tr><td><code>[a-z]</code></td><td>a〜zのいずれか1文字</td></tr><tr><td><code>[^0-9]</code></td><td>0〜9以外の1文字</td></tr><tr><td><code>(...)</code></td><td>キャプチャグループ（後述）</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>「.」「(」「)」など正規表現の特殊記号そのものを置換対象にしたいときは <code></code> でエスケープします。「.」を消すなら <code>"."</code>、「(」を消すなら <code>"("</code> のように書きます。</p></blockquote>



<p class="wp-block-paragraph">置換文字列の側では、後述する <code>$1</code> <code>$2</code> といった「キャプチャグループ参照」が使えます。これがREGEXREPLACE関数の真骨頂ですよ。</p>



<h2 class="wp-block-heading"><span id="toc15">【基本編】REGEXREPLACE関数の使い方をコピペ数式で学ぶ</span></h2>



<p class="wp-block-paragraph">それでは実際に数式を組み立ててみましょう。まずは使用頻度の高い4パターンを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc16">電話番号からハイフンを除去する</span></h3>



<p class="wp-block-paragraph">A列に入った電話番号からハイフンをまとめて削除します。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;-&quot;, &quot;&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>03-1234-5678</td><td>0312345678</td></tr><tr><td>090-1234-5678</td><td>09012345678</td></tr><tr><td>06-1111-2222</td><td>0611112222</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">SUBSTITUTE関数でも同じことはできますが、REGEXREPLACEなら次に紹介する「全角ハイフンや長音記号もまとめて消す」拡張がそのまま書けるのが強みです。</p>



<h3 class="wp-block-heading"><span id="toc17">数字以外を一括削除する</span></h3>



<p class="wp-block-paragraph">電話番号欄に括弧や全角スペースなどが混じっていても、一発で数字だけにできます。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;D&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph"><code>D</code> は「数字以外の1文字」を表す記号です。「03-1234-5678（内線1）」のような入力でも、ハイフン・括弧・空白・「内線」のような文字までまとめて消えて「031234567815」のように数字だけが残ります。逆に「数字だけ消す」なら <code>"d"</code> を指定します。</p>



<h3 class="wp-block-heading"><span id="toc18">余分な空白をまとめて削除する</span></h3>



<p class="wp-block-paragraph">セル内に混じった全角・半角スペース、タブ、改行をまとめて除去します。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;s+&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph"><code>s+</code> は「1文字以上の連続した空白」を表します。Webサイトや別ファイルからコピペしたデータに見えない空白が紛れているときの掃除にぴったりです。改行コードなどの制御文字だけを取り除きたい場合は、<a href="https://mashukabu.com/excel-function-howto-use-clean/">ExcelのCLEAN関数の使い方</a>もあわせて確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc19">連続する空白を半角スペース1つにまとめる</span></h3>



<p class="wp-block-paragraph">空白を完全に消すのではなく、連続分だけ1つに整えたい場合はこちらです。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;s+&quot;, &quot; &quot;)</code></pre>



<p class="wp-block-paragraph">「Hello   World」→「Hello World」のように整形されます。レポートや議事録のコピペ整形で重宝しますよ。空白を完全に消したい場合とは置換文字列が違うだけなので、用途で使い分けてください。</p>



<h2 class="wp-block-heading"><span id="toc20">【実務編】REGEXREPLACE関数の応用例7選</span></h2>



<p class="wp-block-paragraph">基本パターンに慣れたら、実務でよく出てくるシーンを片付けていきましょう。コピペでそのまま使える数式を集めました。</p>



<h3 class="wp-block-heading"><span id="toc21">メールアドレスのドメイン部分をマスキングする</span></h3>



<p class="wp-block-paragraph">個人情報保護のために、メールアドレスの <code>@</code> より後ろを伏せ字にする例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;@.+$&quot;, &quot;@***&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>taro@example.com</td><td>taro@***</td></tr><tr><td>hanako@biz-tactics.co.jp</td><td>hanako@***</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>@.+$</code> は「アットマーク＋1文字以上の末尾まで」を意味します。資料公開やサンプルデータ作成のときに重宝するパターンです。</p>



<h3 class="wp-block-heading"><span id="toc22">HTMLタグを削除して本文だけ取り出す</span></h3>



<p class="wp-block-paragraph">Webから貼り付けた文字列からHTMLタグをまとめて除去する例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;&lt;[^&gt;]+&gt;&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph"><code><[^>]+></code> は「<code><</code> で始まり <code>></code> 以外の文字が1つ以上続き <code>></code> で閉じる部分」を表します。「<code><p>こんにちは<br>世界</p></code>」→「こんにちは世界」のように、タグだけがきれいに消えます。</p>



<h3 class="wp-block-heading"><span id="toc23">全角・半角・長音記号のハイフンをまとめて除去する</span></h3>



<p class="wp-block-paragraph">電話番号の表記揺れ対策です。半角ハイフン・全角ハイフン・マイナス記号・長音記号をまとめて削除します。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[-－−ー]&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">角括弧 <code>[...]</code> の中に「消したい文字」を並べるだけです。SUBSTITUTEでやろうとすると4重ネストが必要なところを、1つの数式で書けてしまいます。同じ要領でカンマ・ピリオド・スラッシュなど複数の記号もまとめて処理できますよ。</p>



<h3 class="wp-block-heading"><span id="toc24">日付の区切り文字を統一する</span></h3>



<p class="wp-block-paragraph"><code>/</code> <code>.</code> <code>-</code> など複数の区切りが混在した日付を、ハイフン区切りに統一する例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[/.-]&quot;, &quot;-&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>2026/04/09</td><td>2026-04-09</td></tr><tr><td>2026.04.09</td><td>2026-04-09</td></tr><tr><td>2026-04-09</td><td>2026-04-09</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">角括弧内のハイフンは <code>-</code> とエスケープしておくと安全です。これで取引先ごとに表記がバラバラな日付も、後続の集計関数で扱える形に整います。</p>



<h3 class="wp-block-heading"><span id="toc25">全角スペースと半角スペースを統一する</span></h3>



<p class="wp-block-paragraph">日本語の名簿で「山田　太郎」と「山田 太郎」が混在しているときの整形です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[ 　]+&quot;, &quot; &quot;)</code></pre>



<p class="wp-block-paragraph">角括弧の中に半角スペースと全角スペースを並べてあります。連続したスペースも半角1つに整います。並び替えや重複チェックの前処理に便利です。</p>



<h3 class="wp-block-heading"><span id="toc26">文字列の先頭・末尾の不要文字を削除する</span></h3>



<p class="wp-block-paragraph">データの先頭や末尾に紛れ込んだ記号を削るパターンです。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;^[s]+|[s]+$&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph"><code>^[s]+</code> で先頭の空白、<code>[s]+$</code> で末尾の空白を指定し、<code>|</code>（OR）で両方を対象にしています。<a href="https://mashukabu.com/excel-function-howto-use-trim/">ExcelのTRIM関数の使い方</a>でも前後の半角空白は削れますが、TRIM関数は全角空白には対応していません。REGEXREPLACE関数なら全角空白・タブ・改行まで一気に処理できますよ。</p>



<h3 class="wp-block-heading"><span id="toc27">動的配列で列全体を一括処理する</span></h3>



<p class="wp-block-paragraph">REGEXREPLACE関数は動的配列に対応しているので、範囲を渡すだけで列全体を処理できます。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2:A100, &quot;-&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">B2セルに上の数式を入れるだけで、A2〜A100のすべての電話番号からハイフンが消えてB列にスピルします。1行ずつ数式をコピーする手間が省けます。</p>



<h3 class="wp-block-heading"><span id="toc28">郵便番号を「123-4567」の形に統一する</span></h3>



<p class="wp-block-paragraph">7桁の数字だけで入力された郵便番号に、ハイフンを付け直す例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;(d{3})(d{4})&quot;, &quot;$1-$2&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>1234567</td><td>123-4567</td></tr><tr><td>1000001</td><td>100-0001</td></tr><tr><td>5300001</td><td>530-0001</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">先頭3桁を <code>(d{3})</code>、続く4桁を <code>(d{4})</code> でキャプチャして、置換側で <code>$1-$2</code> とハイフンを挟んで出力しています。すでにハイフン付きの「123-4567」が混ざっている名簿なら、先にハイフンを消してから付け直すと安全です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(REGEXREPLACE(A2, &quot;D&quot;, &quot;&quot;), &quot;(d{3})(d{4})&quot;, &quot;$1-$2&quot;)</code></pre>



<p class="wp-block-paragraph">内側で数字以外を削除してから、外側で「3桁-4桁」に整える二段構えですね。郵便番号を数値型で入力していると先頭の0が落ちてしまうので、A列は文字列として扱ってください。</p>



<h3 class="wp-block-heading"><span id="toc29">住所から都道府県名を取り除く</span></h3>



<p class="wp-block-paragraph">「東京都千代田区」のような住所文字列から、先頭の都道府県名だけを削除して市区町村以降を取り出す例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;^(東京都|北海道|京都府|大阪府|.{2,3}県)&quot;, &quot;&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>東京都千代田区</td><td>千代田区</td></tr><tr><td>神奈川県横浜市西区</td><td>横浜市西区</td></tr><tr><td>鹿児島県鹿児島市</td><td>鹿児島市</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ここでひとつ落とし穴があります。「<code>^(..[都道府県])</code>（先頭の2文字＋都道府県）」のように手を抜くと、「神奈川県」「和歌山県」「鹿児島県」のような4文字の県名でうまく削れません。そこで、文字数が固定の「東京都・北海道・京都府・大阪府」だけを先に列挙し、残りの県を <code>.{2,3}県</code>（2〜3文字＋県）でまとめて拾っています。<code>|</code>（OR）で並べているだけなので、見た目ほど難しくありませんよ。</p>



<h3 class="wp-block-heading"><span id="toc30">社員番号の表記揺れを「EMP-001」に統一する</span></h3>



<p class="wp-block-paragraph">「EMP-001」「EMP001」「001」のように書式がバラバラな社員コードを、ハイフン付きの形にそろえる例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;^(?:EMP-?)?(d+)$&quot;, &quot;EMP-$1&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>EMP-001</td><td>EMP-001</td></tr><tr><td>EMP001</td><td>EMP-001</td></tr><tr><td>001</td><td>EMP-001</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>(?:EMP-?)?</code> は「『EMP』または『EMP-』があってもなくてもよい」という意味で、<code>(?:...)</code> は結果に取り込まない補助的なグループです。続く <code>(d+)</code> で数字部分だけをキャプチャし、置換側の <code>EMP-$1</code> で接頭辞とハイフンを付け直しています。「emp001」のように小文字も拾いたいときは、第5引数に1を指定して大文字小文字を区別しないようにすればOKです。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;^(?:EMP-?)?(d+)$&quot;, &quot;EMP-$1&quot;, , 1)</code></pre>



<p class="wp-block-paragraph">部署コードや商品コードなど、社内の番号体系を整えるときにそのまま応用できますよ。</p>



<h2 class="wp-block-heading"><span id="toc31">キャプチャグループ（ ）で並び順を入れ替える</span></h2>



<p class="wp-block-paragraph">ここからはREGEXREPLACE関数の真骨頂、キャプチャグループを使った置換です。丸括弧 <code>()</code> で囲んだ部分は「キャプチャグループ」となり、置換文字列の中で <code>$1</code> <code>$2</code> <code>$3</code> … として参照できます。</p>



<h3 class="wp-block-heading"><span id="toc32">「姓 名」を「名 姓」に入れ替える</span></h3>



<p class="wp-block-paragraph">名簿の並び順を入れ替える例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;^(S+)s+(S+)$&quot;, &quot;$2 $1&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>山田 太郎</td><td>太郎 山田</td></tr><tr><td>Suzuki Hanako</td><td>Hanako Suzuki</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>(S+)</code> は「空白以外の1文字以上」をキャプチャするパターンで、置換側の <code>$2 $1</code> で順番を入れ替えています。海外向け資料を作るときの名前並び替えがワンクリックです。</p>



<h3 class="wp-block-heading"><span id="toc33">日付フォーマット yyyy/mm/dd を dd-mm-yyyy に変換</span></h3>



<p class="wp-block-paragraph"><code>yyyy/mm/dd</code> 形式の日付文字列を、<code>dd-mm-yyyy</code> 形式に並び替える例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;(d{4})/(d{2})/(d{2})&quot;, &quot;$3-$2-$1&quot;)</code></pre>



<p class="wp-block-paragraph">「2026/04/09」→「09-04-2026」のように、年月日のパーツを順番入れ替えで出力できます。海外フォーマット対応のレポートを作るときに、元データを壊さず表示だけ整えられますよ。</p>



<h3 class="wp-block-heading"><span id="toc34">電話番号にハイフンを付け直す</span></h3>



<p class="wp-block-paragraph">ハイフンなしの番号にハイフンを再付与するパターンです。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;^(d{2,4})(d{2,4})(d{4})$&quot;, &quot;$1-$2-$3&quot;)</code></pre>



<p class="wp-block-paragraph">「0312345678」→「03-1234-5678」のような出力になります。元データを壊さずに、見た目だけ揃えたいときに便利ですよ。</p>



<h2 class="wp-block-heading"><span id="toc35">LAMBDA・LET関数でよく使うパターンを使い回す</span></h2>



<p class="wp-block-paragraph">同じ正規表現を何度も書いていると、修正のたびにあちこち直すことになって大変です。LET関数やLAMBDA関数と組み合わせれば、よく使うパターンを一元管理できますよ。</p>



<h3 class="wp-block-heading"><span id="toc36">LET関数で入力をまとめて読みやすくする</span></h3>



<p class="wp-block-paragraph">LET関数を使うと、処理対象を変数に置いて数式を見通しよくできます。</p>



<pre class="wp-block-code"><code>=LET(
  input, A2:A100,
  REGEXREPLACE(input, &quot;[-－−ー]&quot;, &quot;&quot;)
)</code></pre>



<p class="wp-block-paragraph"><code>input</code> という名前でA2:A100の範囲を束ねてから、REGEXREPLACEに渡しています。範囲を何度も書かずに済むので、数式が長くなっても何をしているか一目で分かります。</p>



<h3 class="wp-block-heading"><span id="toc37">複数パターンを段階的に連続置換する</span></h3>



<p class="wp-block-paragraph">「空白を整えて → ハイフンを統一して → 全角カッコを消す」のように、複数の置換を順番に重ねたいときも、LET関数で段階を分けると読みやすくなります。</p>



<pre class="wp-block-code"><code>=LET(
  step1, REGEXREPLACE(A2, &quot;s+&quot;, &quot; &quot;),
  step2, REGEXREPLACE(step1, &quot;[-－−ー]&quot;, &quot;-&quot;),
  REGEXREPLACE(step2, &quot;[（）]&quot;, &quot;&quot;)
)</code></pre>



<p class="wp-block-paragraph"><code>step1</code> の結果を <code>step2</code> で受け取り、最後にもう一段かける流れです。REGEXREPLACEを直接3重にネストすると括弧だらけで読めなくなりますが、この書き方なら各ステップの意図がはっきりしますね。</p>



<h3 class="wp-block-heading"><span id="toc38">LAMBDA関数で「自分専用の関数」を作る</span></h3>



<p class="wp-block-paragraph">毎回書くのが面倒なパターンは、LAMBDA関数で名前を付けて自作の関数にしてしまいましょう。手順は次のとおりです。</p>



<ol class="wp-block-list"><li>リボンの「数式」タブ →「名前の定義」をクリック</li><li>「名前」に好きな関数名（例: <code>ハイフン除去</code>）を入力</li><li>「参照範囲」に <code>=LAMBDA(text, REGEXREPLACE(text, "[-－−ー]", ""))</code> と入力</li><li>これで <code>=ハイフン除去(A2)</code> のように、どのセルからでも呼び出せます</li></ol>



<p class="wp-block-paragraph">全角・半角・長音記号のハイフンをまとめて消す処理を、<code>ハイフン除去</code> という名前で何度でも使い回せるようになります。チームで共有するブックに登録しておけば、正規表現に不慣れな同僚も関数名を呼び出すだけで使えて便利ですよ。なお、LET関数・LAMBDA関数ともにREGEXREPLACE関数と同じくMicrosoft 365で利用できます。</p>



<h2 class="wp-block-heading"><span id="toc39">REGEXREPLACEとSUBSTITUTE関数の使い分け（4つの軸で比較）</span></h2>



<p class="wp-block-paragraph">REGEXREPLACEとよく比較されるのがSUBSTITUTE関数です。どちらも「文字列置換」が目的ですが、得意分野が異なります。4つの観点で整理しておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc40">速度・パフォーマンス</span></h3>



<p class="wp-block-paragraph">固定の1文字を置換するだけなら、SUBSTITUTEの方がわずかに高速です。10万行を超える大量データで処理速度が問題になるなら、SUBSTITUTEを選ぶ価値があります。</p>



<h3 class="wp-block-heading"><span id="toc41">可読性・メンテナンス性</span></h3>



<p class="wp-block-paragraph">複数の文字を消したい場合、SUBSTITUTEは多重ネストが必要で数式が読みにくくなります。一方REGEXREPLACEは <code>[abc]</code> の文字クラスで1行にまとめられるため、後から修正するのがラクです。</p>



<h3 class="wp-block-heading"><span id="toc42">バージョン互換性</span></h3>



<p class="wp-block-paragraph">SUBSTITUTEはExcel 全バージョンで使えます。REGEXREPLACEはMicrosoft 365（とExcel for the web）限定です。共有ファイルで相手のバージョンが不明なら、SUBSTITUTEの方が安全です。</p>



<h3 class="wp-block-heading"><span id="toc43">使い分け早見表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>置換対象</th><th>向いているケース</th><th>使えるバージョン</th></tr></thead><tbody><tr><td>SUBSTITUTE</td><td>固定文字列</td><td>「-」を「」に、など決まった文字の単純置換</td><td>全バージョン</td></tr><tr><td>REGEXREPLACE</td><td>正規表現パターン</td><td>パターン置換、複数文字まとめて削除、並び替え</td><td>M365 / Web</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">固定文字列の置換ならSUBSTITUTE、パターン置換と並び替えならREGEXREPLACE、と覚えておけば迷わずに済みますよ。SUBSTITUTEの基本も復習したい方は<a href="https://mashukabu.com/excel-function-howto-use-substitute/">ExcelのSUBSTITUTE関数の使い方</a>もあわせてご覧ください。</p>



<h2 class="wp-block-heading"><span id="toc44">数式が思い通りに動かないときのデバッグ手順</span></h2>



<p class="wp-block-paragraph">正規表現は強力ですが、最初は思った通りに動かないことも多いです。そんなときは姉妹関数を使った「三段検証」で原因を切り分けましょう。</p>



<h3 class="wp-block-heading"><span id="toc45">REGEXTEST関数で段階的にパターンを検証する</span></h3>



<p class="wp-block-paragraph">まずは「そもそもパターンが当たっているか」を確認します。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;あなたのパターン&quot;)</code></pre>



<p class="wp-block-paragraph">TRUEが返るならパターンはマッチしています。FALSEが返るなら、パターンの記述ミス（エスケープ忘れ、文字クラスの書き間違いなど）を疑いましょう。詳しくは<a href="https://mashukabu.com/excel-function-howto-use-regextest/">ExcelのREGEXTEST関数の使い方</a>で解説しています。</p>



<h3 class="wp-block-heading"><span id="toc46">REGEXEXTRACT関数で抽出結果を確認する</span></h3>



<p class="wp-block-paragraph">パターンが当たっていることがわかったら、次は「どこを抽出しているか」を目で見て確認します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;あなたのパターン&quot;)</code></pre>



<p class="wp-block-paragraph">抽出された部分が想定通りなら、REGEXREPLACE に切り替えれば成功します。想定より広い範囲が抽出されているなら「貪欲マッチ」が原因かもしれません（次項参照）。<a href="https://mashukabu.com/excel-function-howto-use-regexextract/">ExcelのREGEXEXTRACT関数の使い方</a>も参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc47">貪欲マッチを最短マッチに変える</span></h3>



<p class="wp-block-paragraph"><code>*</code> <code>+</code> <code>.+</code> などの量指定子はデフォルトで「最長一致（貪欲マッチ）」になります。たとえば <code><.+></code> は <code><p>本文</p></code> 全体にマッチしてしまうので、タグ単位で消したいなら最短マッチに変えましょう。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;&lt;.+?&gt;&quot;, &quot;&quot;)    'OK：タグ単位で削除
=REGEXREPLACE(A2, &quot;&lt;[^&gt;]+&gt;&quot;, &quot;&quot;)  'OK：より厳密な書き方</code></pre>



<p class="wp-block-paragraph"><code>?</code> を付けると「できるだけ少なく一致」する最短マッチに変わります。<code>[^>]+</code> のような文字クラスで範囲を限定する書き方もよく使うテクニックです。</p>



<h2 class="wp-block-heading"><span id="toc48">REGEXREPLACE関数のよくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">REGEXREPLACE関数で表示されるエラーと対処法をまとめました。</p>



<h3 class="wp-block-heading"><span id="toc49">#VALUE! エラー：無効な正規表現・非文字列</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 第2引数に無効な正規表現を指定した、または第1引数に数値型のセルを直接渡した。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: パターンを見直し、特にカッコや特殊記号のエスケープ忘れに注意しましょう。数値セルを渡す場合はTEXT関数で文字列化してから渡します。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(TEXT(A2, &quot;0&quot;), &quot;0&quot;, &quot;*&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc50">#NAME? エラー：非対応バージョン</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: REGEXREPLACE関数に対応していないバージョンのExcelで使っている、または関数名のスペルミス。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: Microsoft 365のサブスクリプションで最新バージョンにアップデートしてください。Excel 2019・2021・2024（永続版）などでは使えません。関数名のスペルもあわせて確認しましょう。</p>



<h3 class="wp-block-heading"><span id="toc51">置換結果が意図と違う：貪欲マッチ・エスケープ</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 「貪欲マッチ」が想定より広く一致している、または特殊記号のエスケープ忘れ。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: <code>.+?</code> の最短マッチに変えるか、<code>[^>]+</code> のように文字クラスで範囲を限定します。エスケープが必要な記号は <code>.</code> <code>(</code> <code>)</code> のように <code></code> を前に付けます。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>無効な正規表現・数値型セル</td><td>パターン見直し・TEXTで文字列化</td></tr><tr><td>#NAME?</td><td>非対応バージョン</td><td>Microsoft 365に更新</td></tr><tr><td>置換結果がおかしい</td><td>貪欲マッチ・エスケープ忘れ</td><td><code>.+?</code> か <code>[^>]+</code>、<code></code> でエスケープ</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">エラーの原因はほとんどが正規表現の記述ミスです。落ち着いて1行ずつ数式を見直せば大丈夫ですよ。</p>



<h2 class="wp-block-heading"><span id="toc52">正規表現3関数（REGEXTEST / REGEXEXTRACT / REGEXREPLACE）の使い分け</span></h2>



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



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>戻り値</th><th>用途</th></tr></thead><tbody><tr><td>REGEXTEST</td><td>TRUE / FALSE</td><td>パターンに一致するかを判定する</td></tr><tr><td>REGEXEXTRACT</td><td>一致した文字列</td><td>パターンに一致する部分を抜き出す</td></tr><tr><td>REGEXREPLACE</td><td>置換後の文字列</td><td>パターンに一致する部分を別の文字列に置き換える</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い分けのイメージは次のとおりです。</p>



<ul class="wp-block-list"><li>「メールアドレスとして正しいか？」→ REGEXTEST</li><li>「本文からメールアドレスだけ抜き出したい」→ REGEXEXTRACT</li><li>「メールアドレスのドメインを伏せ字にしたい」→ REGEXREPLACE</li></ul>



<p class="wp-block-paragraph">3つとも同じPCRE2の正規表現を使うので、パターンの書き方は共通です。REGEXTESTやREGEXEXTRACTで覚えた知識は、そのままREGEXREPLACEでも活きますよ。</p>



<p class="wp-block-paragraph">姉妹記事として、<a href="https://mashukabu.com/excel-function-howto-use-regextest/">ExcelのREGEXTEST関数の使い方</a>と<a href="https://mashukabu.com/excel-function-howto-use-regexextract/">ExcelのREGEXEXTRACT関数の使い方</a>もぜひ参考にしてください。3関数まとめて身につけると、データクレンジング作業の生産性がぐっと上がります。Googleスプレッドシートで同等の処理を行いたい場合は、<a href="https://mashukabu.com/spreadsheet-regexreplace-function/">スプレッドシートのREGEXREPLACE関数の使い方</a>もあわせてどうぞ。</p>



<h2 class="wp-block-heading"><span id="toc53">よくある質問（FAQ）</span></h2>



<p class="wp-block-paragraph">[faq q="REGEXREPLACE関数はExcel 2021で使えますか？" a="使えません。REGEXREPLACE関数はMicrosoft 365のサブスクリプション版（Windows/Mac/Web）でのみ利用できます。Excel 2021・2019などの買い切り版や旧バージョンでは#NAME?エラーになります。バージョンは「ファイル」→「アカウント」→「製品情報」で確認できます。"]</p>



<p class="wp-block-paragraph">[faq q="SUBSTITUTE関数とREGEXREPLACE関数はどう使い分けますか？" a="置換対象が固定の文字列（例: ハイフン「-」だけを削除）ならSUBSTITUTE関数が適しています。一方、パターンで置換したい場合（例: 連続した数字を*に置換、複数の記号をまとめて削除）はREGEXREPLACE関数が便利です。またSUBSTITUTEは全Excelバージョンで使えますが、REGEXREPLACEはMicrosoft 365専用という制約があります。"]</p>



<p class="wp-block-paragraph">[faq q="正規表現のパターンが合っているか確認する方法はありますか？" a="REGEXTEST関数で確認するのがおすすめです。=REGEXTEST(A2, "パターン")でTRUEが返れば、パターンは正しくマッチしています。FALSEの場合は正規表現の記述ミスを疑ってください。さらにREGEXEXTRACT関数で「どの部分がマッチしているか」を目で見て確認すると、REGEXREPLACE関数の置換結果のズレを特定しやすくなります。"]</p>



<p class="wp-block-paragraph">[faq q="全角・半角の文字を同時に置換できますか？" a="できます。文字クラス（角括弧 [ ]）を使って複数の文字をまとめて指定します。例えば半角ハイフンと全角ハイフンを両方削除したい場合は =REGEXREPLACE(A2, "[-－]", "") のように書きます。同様に、半角スペースと全角スペースを一度に削除する場合は =REGEXREPLACE(A2, "[ 　]+", "") と書けます。"]</p>



<p class="wp-block-paragraph">[faq q="GoogleスプレッドシートのREGEXREPLACE関数と同じ書き方で使えますか？" a="基本的な書き方はほぼ共通ですが、正規表現エンジンが異なる点に注意が必要です。ExcelのREGEXREPLACEはPCRE2（Perl互換）、GoogleスプレッドシートはRE2というGoogle製のエンジンを使っています。数字を表すパターンや文字クラス、キャプチャグループの $1 参照など日常的な書き方は両方で同じように動きますが、RE2は後読みなどの高度な機能に対応していません。またスプレッドシート版は引数がテキスト・パターン・置換の3つのみで、Excelの第4引数（出現位置）・第5引数（大文字小文字の区別）に相当するものはありません。"]</p>



<p class="wp-block-paragraph">[faq q="一つの数式で複数パターンを連続置換できますか？" a="できます。方法は2つあります。1つ目は文字クラス（角括弧）で複数の文字をまとめる方法で、同じ種類の削除ならこれが一番シンプルです。2つ目はREGEXREPLACE関数を入れ子（ネスト）にする方法で、ハイフン除去のあとに空白除去をかけるなど、異なる置換を順番に適用したいときに使います。ネストが深くなって読みにくいときは、LET関数で処理を段階に分けると見通しがよくなります。"]</p>



<h2 class="wp-block-heading"><span id="toc54">まとめ：REGEXREPLACE関数で数式デバッグから解放されよう</span></h2>



<p class="wp-block-paragraph">REGEXREPLACE関数は、Excelのセル上で正規表現を使った柔軟な文字列置換ができる関数です。</p>



<p class="wp-block-paragraph">この記事のポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=REGEXREPLACE(テキスト, 正規表現パターン, 置換文字列, [出現位置], [大文字小文字の区別])</code></li><li>Microsoft 365のサブスクリプションが必要（Excel 2019・2021・2024の永続版は不可）</li><li>第4引数でN番目のマッチだけを置換することも可能</li><li>電話番号のハイフン除去・空白削除・HTMLタグ削除などデータクレンジングで大活躍</li><li>全角・半角・長音記号など日本語特有の表記揺れも <code>[...]</code> でまとめて処理できる</li><li>キャプチャグループ <code>()</code> と <code>$1</code> <code>$2</code> で並び順の入れ替えやフォーマット変換ができる</li><li>固定文字列ならSUBSTITUTE、パターン置換ならREGEXREPLACEと使い分ける</li><li>思い通りに動かないときはREGEXTEST→REGEXEXTRACTで段階的に検証する</li><li>姉妹関数にREGEXTEST（判定）とREGEXEXTRACT（抽出）がある</li></ul>



<p class="wp-block-paragraph">まずは <code>=REGEXREPLACE("03-1234-5678", "-", "")</code> のようなシンプルな置換から試してみてください。一度コツをつかめば、SUBSTITUTEの多重ネストとは比較にならない便利さを実感できますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-regexreplace/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのREGEXEXTRACT関数の使い方｜正規表現で文字列を抽出</title>
		<link>https://mashukabu.com/spreadsheet-regexextract-function/</link>
					<comments>https://mashukabu.com/spreadsheet-regexextract-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:31:11 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[FIND関数]]></category>
		<category><![CDATA[MID関数]]></category>
		<category><![CDATA[REGEXEXTRACT関数]]></category>
		<category><![CDATA[REGEXMATCH関数]]></category>
		<category><![CDATA[REGEXREPLACE関数]]></category>
		<category><![CDATA[文字列操作]]></category>
		<category><![CDATA[正規表現]]></category>
		<category><![CDATA[関数の使い方]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4779</guid>

					<description><![CDATA[スプレッドシートのREGEXEXTRACT関数は、正規表現で文字列から必要な部分だけを抽出する関数です。メールアドレスからドメイン抽出、注文番号の取り出し、電話番号の分解など実務パターンや、MID+FINDとの比較、REGEXMATCH・REGEXREPLACEとの使い分けまで解説します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで「住所から都道府県だけ取り出したい」「メールアドレスの@以降を抜き出したい」と思ったことはありませんか？ <a href="https://mashukabu.com/spreadsheet-mid-function/">MID関数</a>と<a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a>を組み合わせれば文字の位置指定で抽出できます。でも、文字数がバラバラなデータには対応しきれないのが現実です。</p>



<p class="wp-block-paragraph">REGEXEXTRACT関数を使えば、<strong>正規表現のパターンに一致する部分だけ</strong>をピンポイントで抽出できます。この記事ではREGEXEXTRACT関数の基本から実務パターンまで丁寧に解説しますね。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-5" checked><label class="toc-title" for="toc-checkbox-5">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">REGEXEXTRACT関数とは？正規表現で文字列を抽出する関数</a><ol><li><a href="#toc2" tabindex="0">「正規表現」って何？</a></li></ol></li><li><a href="#toc3" tabindex="0">REGEXEXTRACT関数の書き方（構文と引数）</a><ol><li><a href="#toc4" tabindex="0">基本構文</a></li><li><a href="#toc5" tabindex="0">キャプチャグループ（括弧）の使い方</a></li></ol></li><li><a href="#toc6" tabindex="0">REGEXEXTRACT関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">数字だけを抽出する</a></li><li><a href="#toc8" tabindex="0">特定のパターンを抽出する</a></li><li><a href="#toc9" tabindex="0">複数のキャプチャグループで分割抽出する</a></li><li><a href="#toc10" tabindex="0">大文字・小文字を区別せずに抽出する</a></li></ol></li><li><a href="#toc11" tabindex="0">実務で使えるパターン集</a><ol><li><a href="#toc12" tabindex="0">メールアドレスからドメインを抽出する</a></li><li><a href="#toc13" tabindex="0">URLからドメイン名を抽出する</a></li><li><a href="#toc14" tabindex="0">住所から都道府県を抽出する</a></li><li><a href="#toc15" tabindex="0">電話番号からエリアコードを抽出する</a></li><li><a href="#toc16" tabindex="0">IFERROR関数と組み合わせてエラーを回避する</a></li><li><a href="#toc17" tabindex="0">ARRAYFORMULA関数と組み合わせて一括抽出する</a></li></ol></li><li><a href="#toc18" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc19" tabindex="0">数値セルで#VALUE!エラーになるケース</a></li><li><a href="#toc20" tabindex="0">パターン不一致で#N/Aエラーになるケース</a></li></ol></li><li><a href="#toc21" tabindex="0">MID+FIND関数との比較</a><ol><li><a href="#toc22" tabindex="0">同じ処理を両方で書いてみる</a></li><li><a href="#toc23" tabindex="0">比較表</a></li><li><a href="#toc24" tabindex="0">どちらを使うべき？</a></li></ol></li><li><a href="#toc25" tabindex="0">REGEXMATCH・REGEXREPLACEとの使い分け</a><ol><li><a href="#toc26" tabindex="0">具体例で比較</a></li></ol></li><li><a href="#toc27" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">REGEXEXTRACT関数とは？正規表現で文字列を抽出する関数</span></h2>



<p class="wp-block-paragraph">REGEXEXTRACT関数は、セルの文字列から<strong>正規表現パターンに一致する部分を抽出</strong>して返す関数です。読み方は「レジェックスエクストラクト」。「Regex（正規表現）」+「Extract（抽出）」が語源です。</p>



<p class="wp-block-paragraph">たとえば「tanaka@example.com」から <code>@(.+)</code> のパターンで抽出すると「example.com」が返ります。@以降のドメイン部分だけを取り出せるわけです。</p>



<p class="wp-block-paragraph">REGEXEXTRACT関数は<strong>Googleスプレッドシート独自の関数</strong>で、Excelには存在しません。Excelで同じことをするにはVBAが必要です。スプレッドシートなら関数だけで正規表現抽出ができるのが大きな強みですよ。</p>



<h3 class="wp-block-heading"><span id="toc2">「正規表現」って何？</span></h3>



<p class="wp-block-paragraph">正規表現とは、文字列のパターンを記号で表すルールです。たとえば <code>[0-9]+</code> は「1文字以上の数字」を意味します。最初はとっつきにくく感じるかもしれません。でも、よく使うパターンは決まっています。この記事で紹介するパターンをコピーして使えばOKです。正規表現の記号一覧は<a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH関数の記事</a>でまとめていますので、そちらも参考にしてください。</p>



<h2 class="wp-block-heading"><span id="toc3">REGEXEXTRACT関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc4">基本構文</span></h3>



<pre class="wp-block-code"><code>=REGEXEXTRACT(テキスト, 正規表現)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>テキスト</td><td>必須</td><td>抽出元の文字列またはセル参照</td></tr><tr><td>正規表現</td><td>必須</td><td>抽出したいパターンの正規表現</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">戻り値は<strong>パターンに一致した文字列</strong>です。一致する部分がなければ#N/Aエラーになります。</p>



<h3 class="wp-block-heading"><span id="toc5">キャプチャグループ（括弧）の使い方</span></h3>



<p class="wp-block-paragraph">REGEXEXTRACT関数の正規表現に<strong>括弧 <code>()</code></strong> を使うと、括弧内に一致した部分だけを返します。これを「キャプチャグループ」と呼びます。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(&quot;tanaka@example.com&quot;, &quot;@(.+)&quot;)
  → &quot;example.com&quot;（@の後ろだけを抽出）

=REGEXEXTRACT(&quot;tanaka@example.com&quot;, &quot;.+@(.+)&quot;)
  → &quot;example.com&quot;（同じ結果）

=REGEXEXTRACT(&quot;tanaka@example.com&quot;, &quot;(.+)@&quot;)
  → &quot;tanaka&quot;（@の前だけを抽出）</code></pre>



<p class="wp-block-paragraph">括弧なしの場合はパターン全体に一致した文字列を返します。括弧ありの場合は括弧内の部分だけを返します。この違いがポイントですよ。</p>



<h2 class="wp-block-heading"><span id="toc6">REGEXEXTRACT関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc7">数字だけを抽出する</span></h3>



<p class="wp-block-paragraph">セルA2に「商品コード: ABC-123」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;[0-9]+&quot;)   → &quot;123&quot;（数字部分を抽出）
=REGEXEXTRACT(A2, &quot;[A-Z]+&quot;)   → &quot;ABC&quot;（英大文字部分を抽出）</code></pre>



<p class="wp-block-paragraph"><code>[0-9]+</code> は「1文字以上の数字」を意味します。最初に一致した部分が返ります。</p>



<h3 class="wp-block-heading"><span id="toc8">特定のパターンを抽出する</span></h3>



<p class="wp-block-paragraph">セルA2に「受付番号: ORD-2024-0456」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;ORD-d{4}-d{4}&quot;)
  → &quot;ORD-2024-0456&quot;（注文番号パターンを抽出）</code></pre>



<p class="wp-block-paragraph"><code>d{4}</code> は「数字がちょうど4桁」を意味します。パターン全体に一致する文字列がそのまま返ります。</p>



<h3 class="wp-block-heading"><span id="toc9">複数のキャプチャグループで分割抽出する</span></h3>



<p class="wp-block-paragraph">括弧を複数使うと、それぞれのグループが<strong>別々のセルに展開</strong>されます。</p>



<p class="wp-block-paragraph">セルA2に「山田太郎 03-1234-5678」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;(.+)s(d{2,4}-d{1,4}-d{3,4})&quot;)
  → &quot;山田太郎&quot; と &quot;03-1234-5678&quot; が隣り合う2つのセルに展開</code></pre>



<p class="wp-block-paragraph">名前と電話番号を一度に分割できるのが便利ですね。複数グループの結果は横方向のセルに出力されます。</p>



<h3 class="wp-block-heading"><span id="toc10">大文字・小文字を区別せずに抽出する</span></h3>



<p class="wp-block-paragraph">REGEXEXTRACT関数はデフォルトで<strong>大文字と小文字を区別</strong>します。区別せずに抽出したいときは <code>(?i)</code> を先頭に付けます。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(&quot;Hello World&quot;, &quot;(?i)hello&quot;)
  → &quot;Hello&quot;（大文字小文字を無視してマッチ・抽出）</code></pre>



<h2 class="wp-block-heading"><span id="toc11">実務で使えるパターン集</span></h2>



<h3 class="wp-block-heading"><span id="toc12">メールアドレスからドメインを抽出する</span></h3>



<p class="wp-block-paragraph">顧客リストのメールアドレスからドメイン部分だけを取り出します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;@(.+)&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th><th>説明</th></tr></thead><tbody><tr><td>tanaka@example.com</td><td>example.com</td><td>@以降を抽出</td></tr><tr><td>sato@company.co.jp</td><td>company.co.jp</td><td>@以降を抽出</td></tr><tr><td>info@test.org</td><td>test.org</td><td>@以降を抽出</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ドメイン別に顧客を集計したいときに便利です。<a href="https://mashukabu.com/spreadsheet-countif-function/">COUNTIF関数</a>と組み合わせれば、ドメイン別の件数集計もできます。</p>



<h3 class="wp-block-heading"><span id="toc13">URLからドメイン名を抽出する</span></h3>



<p class="wp-block-paragraph">Webサイトの一覧からドメイン名だけを取り出します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;https?://([^/]+)&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th></tr></thead><tbody><tr><td>https://www.example.com/page</td><td>www.example.com</td></tr><tr><td>http://blog.test.jp/article/123</td><td>blog.test.jp</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>https?://</code> は「httpまたはhttps」を意味します。<code>([^/]+)</code> は「スラッシュ以外の文字が1文字以上」です。</p>



<h3 class="wp-block-heading"><span id="toc14">住所から都道府県を抽出する</span></h3>



<p class="wp-block-paragraph">住所データから都道府県名だけを取り出します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;^(.{2,3}[都道府県])&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th></tr></thead><tbody><tr><td>東京都渋谷区神南1-2-3</td><td>東京都</td></tr><tr><td>神奈川県横浜市西区</td><td>神奈川県</td></tr><tr><td>大阪府大阪市北区</td><td>大阪府</td></tr><tr><td>北海道札幌市中央区</td><td>北海道</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>.{2,3}</code> は「任意の文字が2〜3文字」を意味します。「東京（2文字）」から「神奈川（3文字）」まで対応できます。</p>



<h3 class="wp-block-heading"><span id="toc15">電話番号からエリアコードを抽出する</span></h3>



<p class="wp-block-paragraph">電話番号の先頭部分（エリアコード）だけを取り出します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;^(0d{1,4})&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th></tr></thead><tbody><tr><td>03-1234-5678</td><td>03</td></tr><tr><td>090-1234-5678</td><td>090</td></tr><tr><td>0120-123-456</td><td>0120</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc16">IFERROR関数と組み合わせてエラーを回避する</span></h3>



<p class="wp-block-paragraph">REGEXEXTRACT関数はパターンに一致しないと#N/Aエラーを返します。<a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>で囲めばエラーを回避できます。</p>



<pre class="wp-block-code"><code>=IFERROR(REGEXEXTRACT(A2, &quot;@(.+)&quot;), &quot;ドメインなし&quot;)</code></pre>



<p class="wp-block-paragraph">パターンに一致しないセルには「ドメインなし」と表示されます。一覧表で使うときは必ずIFERRORで囲むのがおすすめですよ。</p>



<h3 class="wp-block-heading"><span id="toc17">ARRAYFORMULA関数と組み合わせて一括抽出する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA関数</a>と組み合わせれば、複数行を一括で処理できます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IFERROR(REGEXEXTRACT(A2:A100, &quot;@(.+)&quot;), &quot;&quot;))</code></pre>



<p class="wp-block-paragraph">この数式をB2セルに1つ入れるだけで、A2からA100までのメールアドレスからドメインを一括抽出できます。</p>



<h2 class="wp-block-heading"><span id="toc18">よくあるエラーと対処法</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#N/A</td><td>パターンに一致する部分がない</td><td>IFERRORで囲む。正規表現の見直しも確認</td></tr><tr><td>#VALUE!</td><td>テキストが数値</td><td><code>=REGEXEXTRACT(TEXT(A2,"0"), "パターン")</code> で文字列に変換</td></tr><tr><td>#VALUE!</td><td>テキストが空セル</td><td><code>=IF(A2="", "", REGEXEXTRACT(A2, "パターン"))</code> で空チェック</td></tr><tr><td>#REF!</td><td>正規表現の構文エラー</td><td>括弧の閉じ忘れ・エスケープ漏れを確認</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc19">数値セルで#VALUE!エラーになるケース</span></h3>



<p class="wp-block-paragraph">REGEXEXTRACT関数の第1引数は<strong>文字列</strong>が必要です。セルに数値が入っている場合は#VALUE!エラーです。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;d+&quot;)           → A2が数値だと #VALUE!
=REGEXEXTRACT(TEXT(A2, &quot;0&quot;), &quot;d+&quot;) → TEXT関数で文字列に変換すればOK</code></pre>



<p class="wp-block-paragraph">数値から一部を抽出したい場合は、<a href="https://mashukabu.com/spreadsheet-text-function/">TEXT関数</a>で文字列に変換してから渡しましょう。</p>



<h3 class="wp-block-heading"><span id="toc20">パターン不一致で#N/Aエラーになるケース</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH関数</a>はパターン不一致でFALSEを返します。一方、REGEXEXTRACT関数は<strong>#N/Aエラー</strong>を返します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(&quot;abc&quot;, &quot;d+&quot;)  → #N/A（数字が含まれない）</code></pre>



<p class="wp-block-paragraph">一覧表で使うときは <code>=IFERROR(REGEXEXTRACT(A2, "パターン"), "")</code> のようにIFERRORで囲むのが定番です。</p>



<h2 class="wp-block-heading"><span id="toc21">MID+FIND関数との比較</span></h2>



<p class="wp-block-paragraph">文字列の抽出は<a href="https://mashukabu.com/spreadsheet-mid-function/">MID関数</a>と<a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a>の組み合わせでもできます。REGEXEXTRACTとの違いを比較しましょう。</p>



<h3 class="wp-block-heading"><span id="toc22">同じ処理を両方で書いてみる</span></h3>



<p class="wp-block-paragraph">メールアドレス「tanaka@example.com」から@以降を抽出する場合です。</p>



<p class="wp-block-paragraph"><strong>MID+FIND関数の場合:</strong></p>



<pre class="wp-block-code"><code>=MID(A2, FIND(&quot;@&quot;, A2)+1, LEN(A2)-FIND(&quot;@&quot;, A2))</code></pre>



<p class="wp-block-paragraph"><strong>REGEXEXTRACT関数の場合:</strong></p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;@(.+)&quot;)</code></pre>



<p class="wp-block-paragraph">REGEXEXTRACT関数のほうがシンプルですね。MID+FINDは「@の位置を探す→その後ろから末尾までを取る」と2段階の計算が必要です。</p>



<h3 class="wp-block-heading"><span id="toc23">比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>REGEXEXTRACT</th><th>MID + FIND</th></tr></thead><tbody><tr><td>数式の長さ</td><td>短い</td><td>長い（3関数の組み合わせ）</td></tr><tr><td>パターン抽出</td><td>得意（正規表現で柔軟）</td><td>苦手（固定位置のみ）</td></tr><tr><td>可変長データ</td><td>対応できる</td><td>文字数計算が必要</td></tr><tr><td>複数パターン</td><td>1つの数式で対応</td><td>複数のFINDが必要</td></tr><tr><td>Excel互換</td><td>なし（Sheets独自）</td><td>あり</td></tr><tr><td>学習コスト</td><td>正規表現の知識が必要</td><td>低い</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc24">どちらを使うべき？</span></h3>



<ul class="wp-block-list"><li><strong>固定位置から切り出す</strong>（左から3文字、5文字目から8文字）→ <a href="https://mashukabu.com/spreadsheet-mid-function/">MID関数</a>・<a href="https://mashukabu.com/spreadsheet-left-function/">LEFT関数</a>・<a href="https://mashukabu.com/spreadsheet-right-function/">RIGHT関数</a>で十分</li><li><strong>パターンで抽出する</strong>（メールのドメイン、URLのパス）→ <strong>REGEXEXTRACT関数</strong>一択</li><li><strong>Excelとの互換性が必要</strong> → MID + FINDを使う</li></ul>



<p class="wp-block-paragraph">データの形式がバラバラなときほど、REGEXEXTRACT関数の威力を発揮します。</p>



<h2 class="wp-block-heading"><span id="toc25">REGEXMATCH・REGEXREPLACEとの使い分け</span></h2>



<p class="wp-block-paragraph">スプレッドシートには正規表現を使う関数が3つあります。目的で使い分けましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>目的</th><th>戻り値</th><th>使用例</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH</a></td><td>パターンに<strong>一致するか判定</strong></td><td>TRUE / FALSE</td><td>入力チェック、条件分岐</td></tr><tr><td>REGEXEXTRACT</td><td>パターンに一致する部分を<strong>抽出</strong></td><td>一致した文字列</td><td>ドメイン抽出、番号取り出し</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-regexreplace-function/">REGEXREPLACE</a></td><td>パターンに一致する部分を<strong>置換</strong></td><td>置換後の文字列</td><td>ハイフン除去、書式統一</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc26">具体例で比較</span></h3>



<p class="wp-block-paragraph">セルA2に「注文番号: ORD-2024-0123」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;ORD-d{4}-d{4}&quot;)
  → TRUE（注文番号パターンに一致するか判定）

=REGEXEXTRACT(A2, &quot;ORD-d{4}-d{4}&quot;)
  → &quot;ORD-2024-0123&quot;（注文番号部分を抽出）

=REGEXREPLACE(A2, &quot;ORD-&quot;, &quot;&quot;)
  → &quot;注文番号: 2024-0123&quot;（「ORD-」を除去）</code></pre>



<p class="wp-block-paragraph"><strong>判定</strong>は<a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH</a>、<strong>抽出</strong>はREGEXEXTRACT、<strong>置換</strong>はREGEXREPLACEと覚えておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc27">まとめ</span></h2>



<p class="wp-block-paragraph">REGEXEXTRACT関数は、正規表現でパターンに一致する部分を抽出できるスプレッドシート独自の関数です。</p>



<ul class="wp-block-list"><li><strong>基本</strong>: <code>=REGEXEXTRACT(テキスト, 正規表現)</code> で一致部分を返す</li><li><strong>キャプチャグループ</strong>: 括弧 <code>()</code> で囲んだ部分だけを抽出できる</li><li><strong>実務活用</strong>: ドメイン抽出・都道府県抽出・番号分解に最適</li><li><strong>エラー対策</strong>: パターン不一致は#N/Aエラー。IFERRORで囲むのが定番</li><li><strong>使い分け</strong>: 判定はREGEXMATCH、抽出はREGEXEXTRACT、置換はREGEXREPLACE</li></ul>



<p class="wp-block-paragraph">MID+FINDでは書ききれないパターン抽出が必要なとき、ぜひ活用してみてください。正規表現の基本は<a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH関数の記事</a>でまとめています。そちらも合わせてチェックしてみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-regexextract-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのREGEXMATCH関数の使い方｜正規表現でパターン判定</title>
		<link>https://mashukabu.com/spreadsheet-regexmatch-function/</link>
					<comments>https://mashukabu.com/spreadsheet-regexmatch-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:31:06 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[FIND関数]]></category>
		<category><![CDATA[REGEXEXTRACT関数]]></category>
		<category><![CDATA[REGEXMATCH関数]]></category>
		<category><![CDATA[REGEXREPLACE関数]]></category>
		<category><![CDATA[SEARCH関数]]></category>
		<category><![CDATA[文字列操作]]></category>
		<category><![CDATA[正規表現]]></category>
		<category><![CDATA[関数の使い方]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4777</guid>

					<description><![CDATA[スプレッドシートのREGEXMATCH関数は、正規表現でセルの文字列がパターンに一致するかをTRUE/FALSEで返す関数です。メールアドレス・電話番号の判定パターンや、REGEXEXTRACT・REGEXREPLACEとの使い分け、SEARCH/FINDとの違いまで解説します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートでデータの入力チェックをしたいことはありませんか？「メールアドレスの形式になっているか」「電話番号が正しいパターンか」を確認したい場面は多いですよね。<a href="https://mashukabu.com/spreadsheet-search-function/">SEARCH関数</a>や<a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a>では単純な文字検索しかできません。複雑なパターンには対応しきれないのが現実です。</p>



<p class="wp-block-paragraph">REGEXMATCH関数を使えば、<strong>正規表現</strong>で文字列のパターンを判定できます。この記事ではREGEXMATCH関数の基本から実務パターンまで丁寧に解説します。REGEXEXTRACT・REGEXREPLACEとの使い分けもカバーしますね。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">REGEXMATCH関数とは？正規表現でパターン判定する関数</a><ol><li><a href="#toc2" tabindex="0">「正規表現」って何？</a></li></ol></li><li><a href="#toc3" tabindex="0">REGEXMATCH関数の書き方（構文と引数）</a><ol><li><a href="#toc4" tabindex="0">基本構文</a></li><li><a href="#toc5" tabindex="0">正規表現の基本記号</a></li></ol></li><li><a href="#toc6" tabindex="0">基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">特定の文字列が含まれるかを判定する</a></li><li><a href="#toc8" tabindex="0">数字が含まれるかを判定する</a></li><li><a href="#toc9" tabindex="0">大文字・小文字を区別せずに判定する</a></li></ol></li><li><a href="#toc10" tabindex="0">実務で使えるパターン集</a><ol><li><a href="#toc11" tabindex="0">メールアドレスの形式チェック</a></li><li><a href="#toc12" tabindex="0">電話番号の形式チェック</a></li><li><a href="#toc13" tabindex="0">郵便番号の形式チェック</a></li><li><a href="#toc14" tabindex="0">IF関数と組み合わせてラベルを付ける</a></li></ol></li><li><a href="#toc15" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc16" tabindex="0">数値セルで#VALUE!エラーになるケース</a></li><li><a href="#toc17" tabindex="0">正規表現の特殊文字をエスケープし忘れるケース</a></li></ol></li><li><a href="#toc18" tabindex="0">REGEXEXTRACT・REGEXREPLACEとの使い分け</a><ol><li><a href="#toc19" tabindex="0">具体例で比較</a></li></ol></li><li><a href="#toc20" tabindex="0">SEARCH・FIND関数との違い</a><ol><li><a href="#toc21" tabindex="0">どれを使うべき？</a></li></ol></li><li><a href="#toc22" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">REGEXMATCH関数とは？正規表現でパターン判定する関数</span></h2>



<p class="wp-block-paragraph">REGEXMATCH関数は、セルの文字列が<strong>指定した正規表現パターンに一致するか</strong>をTRUE/FALSEで返す関数です。読み方は「レジェックスマッチ」。「Regex（正規表現）」+「Match（一致）」が語源です。</p>



<p class="wp-block-paragraph">たとえば「tanaka@example.com」というセルに対して、メールアドレスのパターンで検索すればTRUEが返ります。「tanaka」のように@がない文字列ならFALSEです。</p>



<p class="wp-block-paragraph">REGEXMATCH関数は<strong>Googleスプレッドシート独自の関数</strong>で、Excelには存在しません。Excelで同じことをするにはVBAが必要です。スプレッドシートなら関数だけで正規表現が使えるのが大きな強みですよ。</p>



<h3 class="wp-block-heading"><span id="toc2">「正規表現」って何？</span></h3>



<p class="wp-block-paragraph">正規表現とは、文字列のパターンを記号で表すルールです。たとえば <code>[0-9]+</code> は「1文字以上の数字」を意味します。最初はとっつきにくく感じるかもしれません。でも、よく使うパターンは決まっています。この記事で紹介するパターンをコピーして使えばOKです。</p>



<h2 class="wp-block-heading"><span id="toc3">REGEXMATCH関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc4">基本構文</span></h3>



<pre class="wp-block-code"><code>=REGEXMATCH(テキスト, 正規表現)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>テキスト</td><td>必須</td><td>判定したい文字列またはセル参照</td></tr><tr><td>正規表現</td><td>必須</td><td>判定に使う正規表現パターン</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">戻り値はTRUEまたはFALSEです。テキストの中にパターンと一致する部分が<strong>1箇所でもあればTRUE</strong>を返します。なければFALSEです。</p>



<h3 class="wp-block-heading"><span id="toc5">正規表現の基本記号</span></h3>



<p class="wp-block-paragraph">REGEXMATCH関数で使う正規表現の記号を押さえておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th><th>例</th><th>マッチする文字列</th></tr></thead><tbody><tr><td><code>.</code></td><td>任意の1文字</td><td><code>a.c</code></td><td>abc, aXc, a1c</td></tr><tr><td><code>*</code></td><td>直前の文字が0回以上</td><td><code>ab*c</code></td><td>ac, abc, abbc</td></tr><tr><td><code>+</code></td><td>直前の文字が1回以上</td><td><code>ab+c</code></td><td>abc, abbc（acは不可）</td></tr><tr><td><code>?</code></td><td>直前の文字が0回か1回</td><td><code>ab?c</code></td><td>ac, abc</td></tr><tr><td><code>^</code></td><td>文字列の先頭</td><td><code>^東京</code></td><td>東京都、東京タワー</td></tr><tr><td><code>$</code></td><td>文字列の末尾</td><td><code>.com$</code></td><td>example.com</td></tr><tr><td><code>[abc]</code></td><td>いずれか1文字</td><td><code>[abc]</code></td><td>a, b, c</td></tr><tr><td><code>[0-9]</code></td><td>数字1文字</td><td><code>[0-9]+</code></td><td>123, 45</td></tr><tr><td><code>[a-zA-Z]</code></td><td>英字1文字</td><td><code>[a-zA-Z]+</code></td><td>Hello, abc</td></tr><tr><td><code>d</code></td><td>数字（[0-9]と同じ）</td><td><code>d{3}</code></td><td>123, 456</td></tr><tr><td><code>{n}</code></td><td>ちょうどn回</td><td><code>d{3}</code></td><td>123（12は不可）</td></tr><tr><td><code>{n,m}</code></td><td>n回以上m回以下</td><td><code>d{2,4}</code></td><td>12, 123, 1234</td></tr><tr><td>`</td><td>`</td><td>または</td><td>`東京</td><td>大阪`</td><td>東京、大阪</td></tr><tr><td><code>()</code></td><td>グループ化</td><td><code>(ab)+</code></td><td>ab, abab</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ピリオド <code>.</code> やプラス <code>+</code> など、正規表現で特別な意味を持つ文字があります。これらをそのまま検索したい場合は、前にバックスラッシュ <code></code> を付けてください。たとえばピリオドそのものを探すなら <code>.</code> と書きます。</p>



<h2 class="wp-block-heading"><span id="toc6">基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc7">特定の文字列が含まれるかを判定する</span></h3>



<p class="wp-block-paragraph">セルA2に「東京都渋谷区」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;東京&quot;)   → TRUE（「東京」が含まれる）
=REGEXMATCH(A2, &quot;大阪&quot;)   → FALSE（「大阪」は含まれない）
=REGEXMATCH(A2, &quot;渋谷|新宿&quot;)  → TRUE（「渋谷」が含まれる）</code></pre>



<p class="wp-block-paragraph">単純な文字列検索なら<a href="https://mashukabu.com/spreadsheet-search-function/">SEARCH関数</a>でもできます。REGEXMATCH関数の真価は、次のようなパターン検索にあります。</p>



<h3 class="wp-block-heading"><span id="toc8">数字が含まれるかを判定する</span></h3>



<p class="wp-block-paragraph">セルA2に「ABC-123」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;[0-9]&quot;)     → TRUE（数字が含まれる）
=REGEXMATCH(A2, &quot;^[0-9]+$&quot;)  → FALSE（全体が数字ではない）</code></pre>



<p class="wp-block-paragraph"><code>[0-9]</code> は「数字が1文字でもあるか」の判定です。<code>^[0-9]+$</code> にすると「すべて数字か」の判定になります。<code>^</code>（先頭）と <code>$</code>（末尾）で全体を囲むのがポイントですよ。</p>



<h3 class="wp-block-heading"><span id="toc9">大文字・小文字を区別せずに判定する</span></h3>



<p class="wp-block-paragraph">REGEXMATCH関数はデフォルトで<strong>大文字と小文字を区別</strong>します。区別せずに判定したいときは <code>(?i)</code> を先頭に付けます。</p>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;tokyo&quot;)      → FALSE（小文字のtokyoは不一致）
=REGEXMATCH(A2, &quot;(?i)tokyo&quot;)  → TRUE（大文字小文字を無視してマッチ）</code></pre>



<p class="wp-block-paragraph"><code>(?i)</code> は「case-insensitive（大文字小文字を無視）」のフラグです。英語データを扱うときに便利ですね。</p>



<h2 class="wp-block-heading"><span id="toc10">実務で使えるパターン集</span></h2>



<h3 class="wp-block-heading"><span id="toc11">メールアドレスの形式チェック</span></h3>



<p class="wp-block-paragraph">入力されたデータがメールアドレスの形式になっているかを判定します。</p>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$&quot;)</code></pre>



<p class="wp-block-paragraph">この正規表現は「英数字@英数字.英字2文字以上」のパターンです。完璧な検証ではありませんが、入力ミスの検出には十分使えます。</p>



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th><th>理由</th></tr></thead><tbody><tr><td>tanaka@example.com</td><td>TRUE</td><td>正しい形式</td></tr><tr><td>tanaka@example</td><td>FALSE</td><td>ドメインにピリオドがない</td></tr><tr><td>tanaka.example.com</td><td>FALSE</td><td>@がない</td></tr><tr><td>@example.com</td><td>FALSE</td><td>ローカル部分がない</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc12">電話番号の形式チェック</span></h3>



<p class="wp-block-paragraph">日本の電話番号パターン（ハイフンあり・なし両対応）を判定します。</p>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;^0d{1,4}-?d{1,4}-?d{3,4}$&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th><th>理由</th></tr></thead><tbody><tr><td>03-1234-5678</td><td>TRUE</td><td>固定電話（ハイフンあり）</td></tr><tr><td>09012345678</td><td>TRUE</td><td>携帯電話（ハイフンなし）</td></tr><tr><td>090-1234-5678</td><td>TRUE</td><td>携帯電話（ハイフンあり）</td></tr><tr><td>1234-5678</td><td>FALSE</td><td>先頭が0でない</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc13">郵便番号の形式チェック</span></h3>



<p class="wp-block-paragraph">「123-4567」または「1234567」の形式を判定します。</p>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;^d{3}-?d{4}$&quot;)</code></pre>



<p class="wp-block-paragraph"><code>-?</code> は「ハイフンが0回か1回」を意味します。ハイフンあり・なしの両方に対応できるのが便利ですね。</p>



<h3 class="wp-block-heading"><span id="toc14">IF関数と組み合わせてラベルを付ける</span></h3>



<p class="wp-block-paragraph">REGEXMATCH関数はTRUE/FALSEを返します。<a href="https://mashukabu.com/spreadsheet-if-function/">IF関数</a>と組み合わせれば条件分岐に使えます。</p>



<pre class="wp-block-code"><code>=IF(REGEXMATCH(A2, &quot;@&quot;), &quot;メールアドレス&quot;, &quot;その他&quot;)</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-filter-function/">FILTER関数</a>と組み合わせれば、パターンに合致する行だけの抽出も可能です。</p>



<pre class="wp-block-code"><code>=FILTER(A2:B10, REGEXMATCH(A2:A10, &quot;東京|大阪&quot;))</code></pre>



<p class="wp-block-paragraph">この数式は、A列に「東京」または「大阪」を含む行だけをA:B列から抽出します。</p>



<h2 class="wp-block-heading"><span id="toc15">よくあるエラーと対処法</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>テキストが数値</td><td><code>=REGEXMATCH(TEXT(A2,"0"), "パターン")</code> で文字列に変換</td></tr><tr><td>#VALUE!</td><td>テキストが空セル</td><td><code>=IF(A2="", FALSE, REGEXMATCH(A2, "パターン"))</code> で空チェック</td></tr><tr><td>#REF!</td><td>正規表現の構文エラー</td><td>括弧の閉じ忘れ・エスケープ漏れを確認</td></tr><tr><td>期待と逆の結果</td><td>部分一致と完全一致の混同</td><td>完全一致なら <code>^パターン$</code> で囲む</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc16">数値セルで#VALUE!エラーになるケース</span></h3>



<p class="wp-block-paragraph">REGEXMATCH関数の第1引数は<strong>文字列</strong>が必要です。セルに数値が入っている場合は#VALUE!エラーになります。</p>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;d+&quot;)           → A2が数値だと #VALUE!
=REGEXMATCH(TEXT(A2, &quot;0&quot;), &quot;d+&quot;) → TEXT関数で文字列に変換すればOK</code></pre>



<p class="wp-block-paragraph">数値にパターン判定をしたい場合は、<a href="https://mashukabu.com/spreadsheet-text-function/">TEXT関数</a>で文字列に変換してから渡しましょう。</p>



<h3 class="wp-block-heading"><span id="toc17">正規表現の特殊文字をエスケープし忘れるケース</span></h3>



<p class="wp-block-paragraph">ピリオド <code>.</code>、括弧 <code>()</code>、プラス <code>+</code> などは正規表現の特殊文字です。これらの文字そのものを検索したい場合は <code></code> でエスケープしてください。</p>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;.&quot;)     → 任意の1文字にマッチ（ほぼ常にTRUE）
=REGEXMATCH(A2, &quot;.&quot;)    → ピリオドそのものにマッチ</code></pre>



<h2 class="wp-block-heading"><span id="toc18">REGEXEXTRACT・REGEXREPLACEとの使い分け</span></h2>



<p class="wp-block-paragraph">スプレッドシートには正規表現を使う関数が3つあります。目的で使い分けましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>目的</th><th>戻り値</th><th>使用例</th></tr></thead><tbody><tr><td>REGEXMATCH</td><td>パターンに<strong>一致するか判定</strong></td><td>TRUE / FALSE</td><td>入力チェック、条件分岐</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-regexextract-function/">REGEXEXTRACT</a></td><td>パターンに一致する部分を<strong>抽出</strong></td><td>一致した文字列</td><td>メールアドレスからドメイン抽出</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-regexreplace-function/">REGEXREPLACE</a></td><td>パターンに一致する部分を<strong>置換</strong></td><td>置換後の文字列</td><td>電話番号のハイフン除去</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc19">具体例で比較</span></h3>



<p class="wp-block-paragraph">セルA2に「注文番号: ORD-2024-0123」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;ORD-d{4}-d{4}&quot;)
  → TRUE（注文番号パターンに一致するか判定）

=REGEXEXTRACT(A2, &quot;ORD-d{4}-d{4}&quot;)
  → &quot;ORD-2024-0123&quot;（注文番号部分を抽出）

=REGEXREPLACE(A2, &quot;ORD-&quot;, &quot;&quot;)
  → &quot;注文番号: 2024-0123&quot;（「ORD-」を除去）</code></pre>



<p class="wp-block-paragraph"><strong>判定</strong>はREGEXMATCH、<strong>抽出</strong>はREGEXEXTRACT、<strong>置換</strong>はREGEXREPLACEと覚えておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc20">SEARCH・FIND関数との違い</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-search-function/">SEARCH関数</a>や<a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a>でも文字列検索はできます。REGEXMATCH関数との違いを整理しましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>REGEXMATCH</th><th>SEARCH</th><th>FIND</th></tr></thead><tbody><tr><td>戻り値</td><td>TRUE/FALSE</td><td>文字位置（数値）</td><td>文字位置（数値）</td></tr><tr><td>正規表現</td><td>使える</td><td>使えない</td><td>使えない</td></tr><tr><td>ワイルドカード</td><td>不要（正規表現で代替）</td><td><code>*</code> <code>?</code> が使える</td><td>使えない</td></tr><tr><td>大文字小文字</td><td>区別する（<code>(?i)</code> で無視可）</td><td>区別しない</td><td>区別する</td></tr><tr><td>不一致時</td><td>FALSE</td><td>#VALUE!エラー</td><td>#VALUE!エラー</td></tr><tr><td>Excel互換</td><td>なし（Sheets独自）</td><td>あり</td><td>あり</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc21">どれを使うべき？</span></h3>



<ul class="wp-block-list"><li><strong>単純な文字検索</strong>（「東京」が含まれるか）→ <a href="https://mashukabu.com/spreadsheet-search-function/">SEARCH関数</a> + ISNUMBER で十分</li><li><strong>パターン検索</strong>（「数字3桁-数字4桁」の形式か）→ <strong>REGEXMATCH関数</strong>一択</li><li><strong>大文字小文字を厳密に区別した検索</strong> → <a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a></li></ul>



<p class="wp-block-paragraph">正規表現が使えるかどうかが最大の違いです。「特定の文字があるか」だけならSEARCH/FINDで十分です。「パターンに合致するか」を判定したいならREGEXMATCH関数を選びましょう。</p>



<h2 class="wp-block-heading"><span id="toc22">まとめ</span></h2>



<p class="wp-block-paragraph">REGEXMATCH関数は、正規表現でパターン判定ができるスプレッドシート独自の関数です。</p>



<ul class="wp-block-list"><li><strong>基本</strong>: <code>=REGEXMATCH(テキスト, 正規表現)</code> でTRUE/FALSEを返す</li><li><strong>実務活用</strong>: メールアドレス・電話番号・郵便番号の入力チェックに最適</li><li><strong>使い分け</strong>: 判定はREGEXMATCH、抽出はREGEXEXTRACT、置換はREGEXREPLACE</li><li><strong>注意点</strong>: 数値セルはTEXT関数で文字列に変換してから渡す</li></ul>



<p class="wp-block-paragraph">SEARCH/FIND関数では対応できないパターン判定が必要なとき、ぜひ活用してみてください。正規表現は最初はとっつきにくいかもしれません。でも、この記事のパターンをコピーして使うだけでも業務効率がぐっと上がりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-regexmatch-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのREGEXREPLACE関数の使い方｜正規表現で文字列を置換</title>
		<link>https://mashukabu.com/spreadsheet-regexreplace-function/</link>
					<comments>https://mashukabu.com/spreadsheet-regexreplace-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:31:01 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[REGEXEXTRACT関数]]></category>
		<category><![CDATA[REGEXMATCH関数]]></category>
		<category><![CDATA[REGEXREPLACE関数]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[文字列操作]]></category>
		<category><![CDATA[正規表現]]></category>
		<category><![CDATA[関数の使い方]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4775</guid>

					<description><![CDATA[スプレッドシートのREGEXREPLACE関数は、正規表現で文字列を一括置換できる関数です。電話番号のハイフン除去、不要な空白の一括削除、データの書式統一など実務パターンや、SUBSTITUTEとの違い、REGEXMATCH・REGEXEXTRACTとの使い分けまで解説します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで「電話番号のハイフンをまとめて消したい」「余分なスペースを一括で削除したい」と思ったことはありませんか？ <a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>なら特定の文字を置換できます。でも、「数字だけ消す」「2つ以上の連続スペースを1つにする」といったパターン指定の置換には対応できません。</p>



<p class="wp-block-paragraph">REGEXREPLACE関数を使えば、<strong>正規表現のパターンに一致する部分をまとめて置換</strong>できます。この記事ではREGEXREPLACE関数の基本から実務パターンまで丁寧に解説しますね。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-7" checked><label class="toc-title" for="toc-checkbox-7">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">REGEXREPLACE関数とは？正規表現で文字列を置換する関数</a><ol><li><a href="#toc2" tabindex="0">「正規表現」って何？</a></li></ol></li><li><a href="#toc3" tabindex="0">REGEXREPLACE関数の書き方（構文と引数）</a><ol><li><a href="#toc4" tabindex="0">基本構文</a></li><li><a href="#toc5" tabindex="0">後方参照（キャプチャグループの再利用）</a></li></ol></li><li><a href="#toc6" tabindex="0">REGEXREPLACE関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">特定の文字を削除する</a></li><li><a href="#toc8" tabindex="0">数字だけを削除する</a></li><li><a href="#toc9" tabindex="0">特定の文字を別の文字に置換する</a></li><li><a href="#toc10" tabindex="0">大文字・小文字を区別せずに置換する</a></li></ol></li><li><a href="#toc11" tabindex="0">実務で使えるパターン集</a><ol><li><a href="#toc12" tabindex="0">電話番号のハイフンを一括削除する</a></li><li><a href="#toc13" tabindex="0">余分なスペースを1つにまとめる</a></li><li><a href="#toc14" tabindex="0">数字以外をすべて削除する</a></li><li><a href="#toc15" tabindex="0">8桁の数字を日付形式に変換する</a></li><li><a href="#toc16" tabindex="0">HTMLタグを一括除去する</a></li><li><a href="#toc17" tabindex="0">ARRAYFORMULA関数と組み合わせて一括置換する</a></li></ol></li><li><a href="#toc18" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc19" tabindex="0">数値セルで#VALUE!エラーになるケース</a></li><li><a href="#toc20" tabindex="0">正規表現の特殊文字をエスケープし忘れるケース</a></li></ol></li><li><a href="#toc21" tabindex="0">SUBSTITUTE関数との違い</a><ol><li><a href="#toc22" tabindex="0">同じ処理を両方で書いてみる</a></li><li><a href="#toc23" tabindex="0">比較表</a></li><li><a href="#toc24" tabindex="0">どちらを使うべき？</a></li></ol></li><li><a href="#toc25" tabindex="0">REGEXMATCH・REGEXEXTRACTとの使い分け</a><ol><li><a href="#toc26" tabindex="0">具体例で比較</a></li></ol></li><li><a href="#toc27" tabindex="0">REGEXREPLACE関数に関するよくある質問</a><ol><li><a href="#toc28" tabindex="0">複数のパターンをまとめて置換できますか？</a></li><li><a href="#toc29" tabindex="0">1番目の一致だけを置換する方法はありますか？</a></li><li><a href="#toc30" tabindex="0">日本語や全角文字にも正規表現は使えますか？</a></li><li><a href="#toc31" tabindex="0">置換結果が思ったとおりにならないときは？</a></li></ol></li><li><a href="#toc32" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">REGEXREPLACE関数とは？正規表現で文字列を置換する関数</span></h2>



<p class="wp-block-paragraph">REGEXREPLACE関数は、セルの文字列から<strong>正規表現パターンに一致する部分を別の文字列に置換</strong>して返す関数です。読み方は「レジェックスリプレイス」。「Regex（正規表現）」+「Replace（置換）」が語源です。</p>



<p class="wp-block-paragraph">たとえば「03-1234-5678」に対して <code>-</code> のパターンで空文字に置換すると「0312345678」が返ります。ハイフンをまとめて除去できるわけです。</p>



<p class="wp-block-paragraph">REGEXREPLACE関数は<strong>Googleスプレッドシート独自の関数</strong>で、Excelには存在しません。Excelで同じことをするにはVBAが必要です。スプレッドシートなら関数だけで正規表現の置換ができるのが大きな強みですよ。</p>



<h3 class="wp-block-heading"><span id="toc2">「正規表現」って何？</span></h3>



<p class="wp-block-paragraph">正規表現とは、文字列のパターンを記号で表すルールです。たとえば <code>[0-9]+</code> は「1文字以上の数字」を意味します。最初はとっつきにくく感じるかもしれません。でも、よく使うパターンは決まっています。この記事で紹介するパターンをコピーして使えばOKです。正規表現の記号一覧は<a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH関数の記事</a>でまとめていますので、そちらも参考にしてください。</p>



<h2 class="wp-block-heading"><span id="toc3">REGEXREPLACE関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc4">基本構文</span></h3>



<pre class="wp-block-code"><code>=REGEXREPLACE(テキスト, 正規表現, 置換文字列)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>テキスト</td><td>必須</td><td>置換対象の文字列またはセル参照</td></tr><tr><td>正規表現</td><td>必須</td><td>置換したいパターンの正規表現</td></tr><tr><td>置換文字列</td><td>必須</td><td>一致部分を置き換える文字列（空文字 <code>""</code> で削除）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">戻り値は<strong>置換後の文字列</strong>です。パターンに一致する部分がなければ元の文字列がそのまま返ります。エラーにはならないのがREGEXEXTRACTとの違いです。</p>



<h3 class="wp-block-heading"><span id="toc5">後方参照（キャプチャグループの再利用）</span></h3>



<p class="wp-block-paragraph">正規表現の括弧 <code>()</code> でキャプチャした部分を、置換文字列の中で <code>$1</code>、<code>$2</code> のように参照できます。これを「後方参照」と呼びます。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(&quot;20240315&quot;, &quot;(d{4})(d{2})(d{2})&quot;, &quot;$1/$2/$3&quot;)
  → &quot;2024/03/15&quot;（8桁の数字を日付形式に変換）</code></pre>



<p class="wp-block-paragraph"><code>$1</code> は1番目の括弧、<code>$2</code> は2番目の括弧に一致した部分です。この仕組みを使えば「削除」だけでなく「並べ替え」や「書式変換」もできますよ。</p>



<h2 class="wp-block-heading"><span id="toc6">REGEXREPLACE関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc7">特定の文字を削除する</span></h3>



<p class="wp-block-paragraph">セルA2に「03-1234-5678」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;-&quot;, &quot;&quot;)   → &quot;0312345678&quot;（ハイフンを削除）</code></pre>



<p class="wp-block-paragraph">第3引数を空文字 <code>""</code> にすると、一致した部分が削除されます。REGEXREPLACE関数はパターンに一致する部分を<strong>すべて</strong>置換します。ハイフンが2つあっても、両方とも一度に消えますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">数字だけを削除する</span></h3>



<p class="wp-block-paragraph">セルA2に「ABC-123-DEF」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[0-9]&quot;, &quot;&quot;)   → &quot;ABC--DEF&quot;（数字だけ削除）
=REGEXREPLACE(A2, &quot;[0-9-]&quot;, &quot;&quot;)  → &quot;ABCDEF&quot;（数字とハイフンを削除）</code></pre>



<p class="wp-block-paragraph"><code>[0-9]</code> は「数字1文字」を意味します。角括弧の中にハイフンも入れれば、まとめて削除できます。</p>



<h3 class="wp-block-heading"><span id="toc9">特定の文字を別の文字に置換する</span></h3>



<p class="wp-block-paragraph">セルA2に「2024/03/15」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;/&quot;, &quot;-&quot;)   → &quot;2024-03-15&quot;（スラッシュをハイフンに変換）</code></pre>



<p class="wp-block-paragraph">単純な文字置換なら<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>でもできます。REGEXREPLACE関数の真価は、次のようなパターン置換にあります。</p>



<h3 class="wp-block-heading"><span id="toc10">大文字・小文字を区別せずに置換する</span></h3>



<p class="wp-block-paragraph">REGEXREPLACE関数はデフォルトで<strong>大文字と小文字を区別</strong>します。区別せずに置換したいときは <code>(?i)</code> を先頭に付けます。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(&quot;Hello World&quot;, &quot;(?i)hello&quot;, &quot;Hi&quot;)
  → &quot;Hi World&quot;（大文字小文字を無視して置換）</code></pre>



<p class="wp-block-paragraph"><code>(?i)</code> は「case-insensitive（大文字小文字を無視）」のフラグです。英語データを扱うときに便利ですね。</p>



<h2 class="wp-block-heading"><span id="toc11">実務で使えるパターン集</span></h2>



<h3 class="wp-block-heading"><span id="toc12">電話番号のハイフンを一括削除する</span></h3>



<p class="wp-block-paragraph">電話番号からハイフンやスペースを取り除いて数字だけにします。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[-s]&quot;, &quot;&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th><th>説明</th></tr></thead><tbody><tr><td>03-1234-5678</td><td>0312345678</td><td>ハイフンを除去</td></tr><tr><td>090 1234 5678</td><td>09012345678</td><td>スペースを除去</td></tr><tr><td>090-1234-5678</td><td>09012345678</td><td>ハイフンを除去</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>s</code> は「空白文字（スペース・タブなど）」を意味します。<code>[-s]</code> でハイフンと空白をまとめて指定できます。</p>



<h3 class="wp-block-heading"><span id="toc13">余分なスペースを1つにまとめる</span></h3>



<p class="wp-block-paragraph">データの中に連続スペースが混在しているとき、すべて1つのスペースに統一します。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;s{2,}&quot;, &quot; &quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th></tr></thead><tbody><tr><td>山田　　太郎</td><td>山田 太郎</td></tr><tr><td>東京都　 　渋谷区</td><td>東京都 渋谷区</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>s{2,}</code> は「空白文字が2つ以上連続」を意味します。これを1つのスペースに置換するわけです。<a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>では前後の空白しか除去できません。文中の連続スペースを整理したいならREGEXREPLACE関数が便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc14">数字以外をすべて削除する</span></h3>



<p class="wp-block-paragraph">住所や備考欄から数字だけを取り出したいときに使います。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[^0-9]&quot;, &quot;&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th></tr></thead><tbody><tr><td>〒100-0001</td><td>1000001</td></tr><tr><td>部屋番号: 301号室</td><td>301</td></tr><tr><td>TEL: 03-1234-5678</td><td>0312345678</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>[^0-9]</code> は「数字以外の文字」を意味します。<code>^</code> が角括弧の先頭にあると「否定」になります。</p>



<h3 class="wp-block-heading"><span id="toc15">8桁の数字を日付形式に変換する</span></h3>



<p class="wp-block-paragraph">「20240315」のような8桁の数字を「2024/03/15」に変換します。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;(d{4})(d{2})(d{2})&quot;, &quot;$1/$2/$3&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th></tr></thead><tbody><tr><td>20240315</td><td>2024/03/15</td></tr><tr><td>20231225</td><td>2023/12/25</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">後方参照 <code>$1/$2/$3</code> を使って、キャプチャした年・月・日をスラッシュ区切りに並べ替えています。</p>



<h3 class="wp-block-heading"><span id="toc16">HTMLタグを一括除去する</span></h3>



<p class="wp-block-paragraph">Webからコピーしたデータに混じったHTMLタグを取り除きます。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;&lt;[^&gt;]+&gt;&quot;, &quot;&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th></tr></thead><tbody><tr><td><code><b>重要</b>なお知らせ</code></td><td>重要なお知らせ</td></tr><tr><td><code><a href="...">リンク</a></code></td><td>リンク</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code><[^>]+></code> は「<code><</code> で始まり <code>></code> で終わるタグ」を意味します。Webからのデータ貼り付けで重宝しますね。</p>



<h3 class="wp-block-heading"><span id="toc17">ARRAYFORMULA関数と組み合わせて一括置換する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA関数</a>と組み合わせれば、複数行を一括で処理できます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(REGEXREPLACE(A2:A100, &quot;-&quot;, &quot;&quot;))</code></pre>



<p class="wp-block-paragraph">この数式をB2セルに1つ入れるだけで、A2からA100までのデータからハイフンを一括削除できます。</p>



<h2 class="wp-block-heading"><span id="toc18">よくあるエラーと対処法</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>テキストが数値</td><td><code>=REGEXREPLACE(TEXT(A2,"0"), "パターン", "置換")</code> で文字列に変換</td></tr><tr><td>#VALUE!</td><td>テキストが空セル</td><td><code>=IF(A2="", "", REGEXREPLACE(A2, "パターン", "置換"))</code> で空チェック</td></tr><tr><td>#REF!</td><td>正規表現の構文エラー</td><td>括弧の閉じ忘れ・エスケープ漏れを確認</td></tr><tr><td>置換されない</td><td>パターンの大文字小文字が不一致</td><td><code>(?i)</code> を先頭に付けて大文字小文字を無視</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc19">数値セルで#VALUE!エラーになるケース</span></h3>



<p class="wp-block-paragraph">REGEXREPLACE関数の第1引数は<strong>文字列</strong>が必要です。セルに数値が入っている場合は#VALUE!エラーになります。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;d&quot;, &quot;X&quot;)           → A2が数値だと #VALUE!
=REGEXREPLACE(TEXT(A2, &quot;0&quot;), &quot;d&quot;, &quot;X&quot;) → TEXT関数で文字列に変換すればOK</code></pre>



<p class="wp-block-paragraph">数値を置換したい場合は、<a href="https://mashukabu.com/spreadsheet-text-function/">TEXT関数</a>で文字列に変換してから渡しましょう。</p>



<h3 class="wp-block-heading"><span id="toc20">正規表現の特殊文字をエスケープし忘れるケース</span></h3>



<p class="wp-block-paragraph">ピリオド <code>.</code>、括弧 <code>()</code>、プラス <code>+</code> などは正規表現の特殊文字です。これらの文字そのものを置換したい場合は <code></code> でエスケープしてください。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;.&quot;, &quot;X&quot;)     → すべての文字がXに置換される
=REGEXREPLACE(A2, &quot;.&quot;, &quot;X&quot;)    → ピリオドだけがXに置換される</code></pre>



<h2 class="wp-block-heading"><span id="toc21">SUBSTITUTE関数との違い</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>でも文字列の置換はできます。REGEXREPLACE関数との違いを整理しましょう。</p>



<h3 class="wp-block-heading"><span id="toc22">同じ処理を両方で書いてみる</span></h3>



<p class="wp-block-paragraph">電話番号「03-1234-5678」からハイフンを除去する場合です。</p>



<p class="wp-block-paragraph"><strong>SUBSTITUTE関数の場合:</strong></p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A2, &quot;-&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph"><strong>REGEXREPLACE関数の場合:</strong></p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;-&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">この例では同じ結果になります。では「数字だけを削除する」場合はどうでしょう。</p>



<p class="wp-block-paragraph"><strong>SUBSTITUTE関数の場合:</strong></p>



<pre class="wp-block-code"><code>=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
  SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
  A2,&quot;0&quot;,&quot;&quot;),&quot;1&quot;,&quot;&quot;),&quot;2&quot;,&quot;&quot;),&quot;3&quot;,&quot;&quot;),&quot;4&quot;,&quot;&quot;),&quot;5&quot;,&quot;&quot;),&quot;6&quot;,&quot;&quot;),&quot;7&quot;,&quot;&quot;),&quot;8&quot;,&quot;&quot;),&quot;9&quot;,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph"><strong>REGEXREPLACE関数の場合:</strong></p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[0-9]&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">パターン置換ではREGEXREPLACE関数が圧倒的にシンプルですね。</p>



<h3 class="wp-block-heading"><span id="toc23">比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>REGEXREPLACE</th><th>SUBSTITUTE</th></tr></thead><tbody><tr><td>正規表現</td><td>使える</td><td>使えない</td></tr><tr><td>パターン置換</td><td>得意（1つの数式で完結）</td><td>苦手（ネストが必要）</td></tr><tr><td>大文字小文字の区別</td><td>区別する（<code>(?i)</code> で無視可）</td><td>区別する</td></tr><tr><td>一致しない場合</td><td>元の文字列を返す</td><td>元の文字列を返す</td></tr><tr><td>置換回数の指定</td><td>できない（すべて置換）</td><td>第4引数で指定可能</td></tr><tr><td>Excel互換</td><td>なし（Sheets独自）</td><td>あり</td></tr><tr><td>学習コスト</td><td>正規表現の知識が必要</td><td>低い</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc24">どちらを使うべき？</span></h3>



<ul class="wp-block-list"><li><strong>固定の文字を置換</strong>（ハイフンを消す、「株式会社」を「(株)」に変える）→ <a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>で十分</li><li><strong>パターンで置換</strong>（数字をすべて消す、連続スペースを詰める）→ <strong>REGEXREPLACE関数</strong>一択</li><li><strong>N番目だけ置換</strong>（2つ目のハイフンだけ消す）→ <a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>の第4引数</li><li><strong>Excelとの互換性が必要</strong> → SUBSTITUTE関数を使う</li></ul>



<p class="wp-block-paragraph">固定文字の置換ならSUBSTITUTE、パターン置換ならREGEXREPLACEと覚えておけば迷いません。</p>



<h2 class="wp-block-heading"><span id="toc25">REGEXMATCH・REGEXEXTRACTとの使い分け</span></h2>



<p class="wp-block-paragraph">スプレッドシートには正規表現を使う関数が3つあります。目的で使い分けましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>目的</th><th>戻り値</th><th>使用例</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH</a></td><td>パターンに<strong>一致するか判定</strong></td><td>TRUE / FALSE</td><td>入力チェック、条件分岐</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-regexextract-function/">REGEXEXTRACT</a></td><td>パターンに一致する部分を<strong>抽出</strong></td><td>一致した文字列</td><td>ドメイン抽出、番号取り出し</td></tr><tr><td>REGEXREPLACE</td><td>パターンに一致する部分を<strong>置換</strong></td><td>置換後の文字列</td><td>ハイフン除去、書式統一</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc26">具体例で比較</span></h3>



<p class="wp-block-paragraph">セルA2に「注文番号: ORD-2024-0123」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;ORD-d{4}-d{4}&quot;)
  → TRUE（注文番号パターンに一致するか判定）

=REGEXEXTRACT(A2, &quot;ORD-d{4}-d{4}&quot;)
  → &quot;ORD-2024-0123&quot;（注文番号部分を抽出）

=REGEXREPLACE(A2, &quot;ORD-&quot;, &quot;&quot;)
  → &quot;注文番号: 2024-0123&quot;（「ORD-」を除去）</code></pre>



<p class="wp-block-paragraph"><strong>判定</strong>は<a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH</a>、<strong>抽出</strong>は<a href="https://mashukabu.com/spreadsheet-regexextract-function/">REGEXEXTRACT</a>、<strong>置換</strong>はREGEXREPLACEと覚えておきましょう。これでREGEX3関数シリーズはすべて揃いました。</p>



<h2 class="wp-block-heading"><span id="toc27">REGEXREPLACE関数に関するよくある質問</span></h2>



<h3 class="wp-block-heading"><span id="toc28">複数のパターンをまとめて置換できますか？</span></h3>



<p class="wp-block-paragraph">1つのREGEXREPLACE関数で複数パターンを同時に置換することはできません。ただし、<code>|</code>（OR記号）を使えば「AまたはB」の置換は可能です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[.,;]&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">これで <code>.</code>・<code>,</code>・<code>;</code> をまとめて削除できます。パターンごとに異なる置換文字列を指定したい場合はネストを使います。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(REGEXREPLACE(A2, &quot;株式会社&quot;, &quot;(株)&quot;), &quot;有限会社&quot;, &quot;(有)&quot;)</code></pre>



<p class="wp-block-paragraph">内側から順に処理されます。3段以上のネストは数式が複雑になるため、<a href="https://mashukabu.com/spreadsheet-lambda-function/">LAMBDA関数</a>を使って再帰的に処理する方法や、列を分けて段階処理する方法を検討してください。</p>



<h3 class="wp-block-heading"><span id="toc29">1番目の一致だけを置換する方法はありますか？</span></h3>



<p class="wp-block-paragraph">REGEXREPLACE関数はパターンに一致する部分を<strong>すべて</strong>置換します。「N番目だけ置換する」機能はありません。</p>



<p class="wp-block-paragraph">特定の出現位置だけを置換したい場合は、<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>の第4引数を使うのが最もシンプルです。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A2, &quot;-&quot;, &quot;&quot;, 1)   → 1番目のハイフンだけ削除
=SUBSTITUTE(A2, &quot;-&quot;, &quot;&quot;, 2)   → 2番目のハイフンだけ削除</code></pre>



<p class="wp-block-paragraph">このケースはSUBSTITUTE関数を使ってください。</p>



<h3 class="wp-block-heading"><span id="toc30">日本語や全角文字にも正規表現は使えますか？</span></h3>



<p class="wp-block-paragraph">使えます。REGEXREPLACE関数はUnicodeに対応しているため、日本語・全角文字・ひらがな・カタカナをパターンに含められます。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[ぁ-ん]&quot;, &quot;&quot;)    → ひらがなを削除
=REGEXREPLACE(A2, &quot;[ァ-ン]&quot;, &quot;&quot;)    → カタカナを削除
=REGEXREPLACE(A2, &quot;[！-～]&quot;, &quot;&quot;)    → 全角記号・全角英数字を削除</code></pre>



<p class="wp-block-paragraph">ただし <code>d</code>（数字）は半角数字にしか対応しません。全角数字（１２３）を対象にするには <code>[０-９]</code> のようにUnicode範囲で明示的に指定するか、<a href="https://mashukabu.com/spreadsheet-asc-function/">ASC関数</a>で全角を半角に変換してからREGEXREPLACEを適用する方法もあります。</p>



<h3 class="wp-block-heading"><span id="toc31">置換結果が思ったとおりにならないときは？</span></h3>



<p class="wp-block-paragraph">以下の順番で確認してください。</p>



<ol class="wp-block-list"><li><strong><a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH関数</a>でパターンが一致するか確認する</strong></li></ol>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;パターン&quot;)   → TRUEなら一致、FALSEなら不一致</code></pre>



<p class="wp-block-paragraph">FALSEが返るなら正規表現パターン自体が間違っています。</p>



<ol class="wp-block-list"><li><strong>特殊文字のエスケープ漏れを確認する</strong></li></ol>



<p class="wp-block-paragraph"><code>.</code>・<code>(</code>・<code>)</code>・<code>+</code>・<code>*</code>・<code>?</code>・<code>[</code>・<code>]</code> は正規表現の特殊文字です。文字そのものを指定したい場合は <code>.</code>・<code>(</code>・<code>)</code> のようにバックスラッシュを付けてください。</p>



<ol class="wp-block-list"><li><strong>大文字小文字を確認する</strong></li></ol>



<p class="wp-block-paragraph">デフォルトは大文字小文字を区別します。区別しない場合は <code>(?i)</code> を先頭に追加します。</p>



<ol class="wp-block-list"><li><strong>セルのデータ型を確認する</strong></li></ol>



<p class="wp-block-paragraph">数値セルでは#VALUE!エラーになります。<code>TEXT(A2,"0")</code> で文字列に変換してから試してください。</p>



<h2 class="wp-block-heading"><span id="toc32">まとめ</span></h2>



<p class="wp-block-paragraph">REGEXREPLACE関数は、正規表現でパターンに一致する部分を置換できるスプレッドシート独自の関数です。</p>



<ul class="wp-block-list"><li><strong>基本</strong>: <code>=REGEXREPLACE(テキスト, 正規表現, 置換文字列)</code> で一致部分を置換</li><li><strong>後方参照</strong>: 括弧 <code>()</code> でキャプチャした部分を <code>$1</code> <code>$2</code> で再利用できる</li><li><strong>実務活用</strong>: ハイフン除去・連続スペース整理・数字以外の削除・HTMLタグ除去に最適</li><li><strong>使い分け</strong>: 固定文字の置換はSUBSTITUTE、パターン置換はREGEXREPLACE</li><li><strong>REGEX3関数</strong>: 判定はREGEXMATCH、抽出はREGEXEXTRACT、置換はREGEXREPLACE</li></ul>



<p class="wp-block-paragraph">SUBSTITUTE関数ではカバーしきれないパターン置換が必要なとき、ぜひ活用してみてください。正規表現の基本は<a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH関数の記事</a>でまとめています。そちらも合わせてチェックしてみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-regexreplace-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
