<?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%96%87%e5%ad%97%e5%88%97%e7%bd%ae%e6%8f%9b/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 04 Jun 2026 14:49:45 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</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>【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-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">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>ExcelのREPLACE関数の使い方｜位置指定で文字列を置換する方法</title>
		<link>https://mashukabu.com/excel-function-howto-use-replace/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-replace/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 04 Apr 2026 04:32:30 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[REPLACE関数]]></category>
		<category><![CDATA[データ整形]]></category>
		<category><![CDATA[テキスト操作]]></category>
		<category><![CDATA[文字列置換]]></category>
		<category><![CDATA[関数比較]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5776</guid>

					<description><![CDATA[ExcelのREPLACE関数で開始位置と文字数を指定して文字列を置換する方法を解説。電話番号マスキング・個人情報の一部非表示など実務例を紹介し、SUBSTITUTE関数との違いも比較表で整理しています。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">電話番号の下4桁を「****」に伏せたい、社員番号の先頭だけ別の文字に差し替えたい。そんなとき「何文字目から何文字を置き換える」と位置で指定できると便利ですよね。REPLACE関数を使えば、開始位置と文字数を指定してピンポイントで文字列を差し替えられます。この記事では基本の書き方から実務で使えるマスキング・データ整形パターンまで、まとめて紹介します。</p>



<p class="wp-block-paragraph">この記事は次のような人におすすめ</p>



<ul class="wp-block-list"><li>セルの中の「何文字目から何文字」を別の文字に差し替えたい</li><li>電話番号や個人情報の一部をマスキング（伏字）したい</li><li>REPLACE関数とSUBSTITUTE関数の違いを知りたい</li></ul>




  <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">REPLACE関数とは？</a></li><li><a href="#toc2" tabindex="0">REPLACE関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">REPLACE関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">指定した位置の文字を置き換える</a></li><li><a href="#toc7" tabindex="0">文字を削除する（空文字で置換）</a></li><li><a href="#toc8" tabindex="0">文字を挿入する（文字数を0にする）</a></li></ol></li><li><a href="#toc9" tabindex="0">REPLACE関数の実務活用パターン</a><ol><li><a href="#toc10" tabindex="0">電話番号の一部をマスキング（伏字）する</a></li><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">REPLACE関数とLEN関数で末尾の文字を置き換える</a></li></ol></li><li><a href="#toc15" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc16" tabindex="0">REPLACE関数とSUBSTITUTE関数の違い</a></li><li><a href="#toc17" tabindex="0">REPLACEB関数との違い</a></li><li><a href="#toc18" tabindex="0">まとめ</a><ol><li><a href="#toc19" tabindex="0">関連記事</a></li><li><a href="#toc20" tabindex="0">関数一覧</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">REPLACE（リプレイス）関数は、文字列の中で「何文字目から何文字」を指定し、その部分を別の文字列に置き換える関数です。英語の「replace」は「取り替える」という意味で、位置指定で文字を差し替える専用の関数です。</p>



<p class="wp-block-paragraph">たとえば「090-1234-5678」の5文字目から4文字（つまり「1234」の部分）を「****」に変えるといった使い方ができます。置き換えたい文字の内容がわからなくても、位置さえわかっていれば確実に置換できるのがポイントです。</p>



<p class="wp-block-paragraph">Excel 2007以降のすべてのバージョン（Excel 2010、2013、2016、2019、2021、Microsoft 365）で使用できます。</p>



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



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



<pre class="wp-block-code"><code>=REPLACE(文字列, 開始位置, 文字数, 置換文字列)</code></pre>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</span></h3>



<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>置き換えを始める位置（1から数える）</td></tr><tr><td>文字数</td><td>必須</td><td>置き換える文字の数（0を指定すると挿入になる）</td></tr><tr><td>置換文字列</td><td>必須</td><td>置き換え後の文字列（&#8221;&#8221;を指定すると削除になる）</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>4つの引数はすべて必須です。開始位置は「1」が先頭です。0を指定すると先頭より前に挿入されてしまうので注意してください。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc6">指定した位置の文字を置き換える</span></h3>



<p class="wp-block-paragraph">セルA1に「ABCDEFG」と入っている場合に、3文字目から2文字（「CD」）を「XX」に置き換えてみます。</p>



<pre class="wp-block-code"><code>=REPLACE(A1,3,2,&quot;XX&quot;)</code></pre>



<p class="wp-block-paragraph">結果は「ABXXEFG」になります。3文字目の「C」から2文字分が「XX」に差し替わりました。</p>



<h3 class="wp-block-heading"><span id="toc7">文字を削除する（空文字で置換）</span></h3>



<p class="wp-block-paragraph">置換文字列に「&#8221;&#8221;」（空文字）を指定すると、該当する位置の文字を削除できます。</p>



<pre class="wp-block-code"><code>=REPLACE(A1,3,2,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">A1が「ABCDEFG」なら、結果は「ABEFG」です。3文字目から2文字分が消えます。</p>



<h3 class="wp-block-heading"><span id="toc8">文字を挿入する（文字数を0にする）</span></h3>



<p class="wp-block-paragraph">文字数に「0」を指定すると、何も削除せずに文字列を挿入できます。</p>



<pre class="wp-block-code"><code>=REPLACE(A1,3,0,&quot;★&quot;)</code></pre>



<p class="wp-block-paragraph">A1が「ABCDEFG」なら、結果は「AB★CDEFG」です。3文字目の直前に「★」が挿入されます。既存の文字は削除されません。</p>



<h2 class="wp-block-heading"><span id="toc9">REPLACE関数の実務活用パターン</span></h2>



<h3 class="wp-block-heading"><span id="toc10">電話番号の一部をマスキング（伏字）する</span></h3>



<p class="wp-block-paragraph">個人情報保護のため、電話番号の一部を「****」で伏せたい場面はよくあります。</p>



<pre class="wp-block-code"><code>=REPLACE(A1,5,4,&quot;****&quot;)</code></pre>



<p class="wp-block-paragraph">A1が「090-1234-5678」の場合、結果は「090-<strong>*<em>-5678」になります。5文字目から4文字（「1234」の部分）が「</strong></em>*」に置き換わります。</p>



<p class="wp-block-paragraph">ハイフンなしの「09012345678」なら、開始位置を調整してください。</p>



<pre class="wp-block-code"><code>=REPLACE(A1,4,4,&quot;****&quot;)</code></pre>



<p class="wp-block-paragraph">結果は「090****5678」です。</p>



<h3 class="wp-block-heading"><span id="toc11">名前の一部を非表示にする</span></h3>



<p class="wp-block-paragraph">顧客名簿で名字だけ表示し、名前を伏せたいケースです。<a href="https://mashukabu.com/excel-function-howto-use-search/">SEARCH関数</a>と組み合わせて、スペース以降を「●●」に置き換えます。</p>



<pre class="wp-block-code"><code>=REPLACE(A1,SEARCH(&quot; &quot;,A1),LEN(A1)-SEARCH(&quot; &quot;,A1)+1,&quot;●●&quot;)</code></pre>



<p class="wp-block-paragraph">A1が「山田 太郎」の場合、SEARCH関数でスペースの位置（3文字目）を取得し、そこから末尾までを「●●」に置き換えます。結果は「山田●●」です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>SEARCH関数は大文字・小文字を区別しません。完全一致で検索したい場合はFIND関数を使ってください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc12">郵便番号にハイフンを挿入する</span></h3>



<p class="wp-block-paragraph">ハイフンなしの郵便番号「1234567」に、4文字目の位置でハイフンを挿入します。</p>



<pre class="wp-block-code"><code>=REPLACE(A1,4,0,&quot;-&quot;)</code></pre>



<p class="wp-block-paragraph">結果は「123-4567」です。文字数を0にしているので、既存の数字は削除されずにハイフンだけが入ります。</p>



<h3 class="wp-block-heading"><span id="toc13">社員番号の先頭コードを変更する</span></h3>



<p class="wp-block-paragraph">部門コードが変わって先頭2文字を差し替えたい場合です。</p>



<pre class="wp-block-code"><code>=REPLACE(A1,1,2,&quot;BD&quot;)</code></pre>



<p class="wp-block-paragraph">A1が「AC12345」なら、結果は「BD12345」です。先頭2文字の「AC」が「BD」に変わります。</p>



<h3 class="wp-block-heading"><span id="toc14">REPLACE関数とLEN関数で末尾の文字を置き換える</span></h3>



<p class="wp-block-paragraph">末尾から何文字を置き換えたい場合は、<a href="https://mashukabu.com/excel-function-howto-use-len/">LEN関数</a>と組み合わせます。</p>



<pre class="wp-block-code"><code>=REPLACE(A1,LEN(A1)-2+1,2,&quot;XX&quot;)</code></pre>



<p class="wp-block-paragraph">A1が「ABCDEFG」なら、LEN(A1)は7なので開始位置は6になり、結果は「ABCDEXX」です。末尾2文字の「FG」が「XX」に変わります。</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>開始位置は1以上、文字数は0以上の整数を指定してください</td></tr><tr><td>#VALUE!エラー</td><td>開始位置や文字数にテキストを指定した</td><td>数値として認識できる値を入力してください。セル参照の場合はそのセルが数値か確認します</td></tr><tr><td>意図しない位置で置換される</td><td>開始位置の数え間違い</td><td>先頭が「1」であることに注意。<a href="https://mashukabu.com/excel-function-howto-use-mid/">MID関数</a>で該当位置の文字を確認してから指定すると間違いを防げます</td></tr><tr><td>全角文字で位置がずれる</td><td>REPLACE関数は1文字を1と数える</td><td>全角も半角も1文字は1です。バイト数で数えたい場合はREPLACEB関数を使ってください</td></tr><tr><td>置換後に文字数が変わる</td><td>置換文字列の長さが元の文字数と異なる</td><td>REPLACE関数は指定した文字数分を削除してから置換文字列を挿入するため、長さが変わるのは正常な動作です</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc16">REPLACE関数とSUBSTITUTE関数の違い</span></h2>



<p class="wp-block-paragraph">文字列を置き換える関数にはSUBSTITUTE関数もあります。名前が似ていて混同しやすいですが、置換対象の指定方法がまったく異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>REPLACE関数</th><th>SUBSTITUTE関数</th></tr></thead><tbody><tr><td>置換対象の指定</td><td><strong>位置（何文字目から何文字）</strong>で指定</td><td><strong>文字列</strong>で指定</td></tr><tr><td>構文</td><td>=REPLACE(文字列, 開始位置, 文字数, 置換文字列)</td><td>=SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換対象])</td></tr><tr><td>得意な場面</td><td>決まった位置の文字を置き換える</td><td>特定の文字を探して置き換える</td></tr><tr><td>使用例</td><td>先頭3文字をマスキング・郵便番号にハイフン挿入</td><td>ハイフン除去・表記統一</td></tr><tr><td>大文字・小文字</td><td>関係なし（位置で指定するため）</td><td>区別する</td></tr><tr><td>複数箇所の同時置換</td><td>できない（1回の呼び出しで1箇所のみ）</td><td>検索文字列にヒットする全箇所を一括置換</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「何文字目から何文字を変えたい」ならREPLACE関数、「この文字を消したい・変えたい」なら<a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>です。</p>



<p class="wp-block-paragraph">たとえば電話番号のハイフンをすべて消したいなら、どこにハイフンがあるかは関係ないのでSUBSTITUTE関数が適しています。一方、電話番号の4桁目から4文字を伏せたいなら、位置が決まっているのでREPLACE関数の出番です。</p>



<h2 class="wp-block-heading"><span id="toc17">REPLACEB関数との違い</span></h2>



<p class="wp-block-paragraph">REPLACEB（リプレイスビー）関数は、REPLACE関数のバイト数版です。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>REPLACE関数</th><th>REPLACEB関数</th></tr></thead><tbody><tr><td>文字の数え方</td><td><strong>文字数</strong>で数える（全角も半角も1文字=1）</td><td><strong>バイト数</strong>で数える（半角=1バイト、全角=2バイト）</td></tr><tr><td>構文</td><td>=REPLACE(文字列, 開始位置, 文字数, 置換文字列)</td><td>=REPLACEB(文字列, 開始位置, バイト数, 置換文字列)</td></tr><tr><td>使い分け</td><td>通常はこちらで十分</td><td>半角と全角が混在するデータでバイト単位の制御が必要な場合</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">通常の業務ではREPLACE関数で十分です。半角カナと全角文字が混在するデータで正確にバイト位置を指定したい場合にREPLACEB関数を使ってください。</p>



<pre class="wp-block-code"><code>=REPLACEB(A1,1,2,&quot;XX&quot;)</code></pre>



<p class="wp-block-paragraph">A1が「あいうえお」の場合、全角の「あ」は2バイトなので、1バイト目から2バイト分（「あ」1文字分）が「XX」に変わります。結果は「XXいうえお」です。</p>



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



<p class="wp-block-paragraph">REPLACE関数は「何文字目から何文字を別の文字列に置き換える」ための関数です。</p>



<ul class="wp-block-list"><li>開始位置と文字数で置換範囲を指定するので、置き換えたい文字の内容がわからなくても使える</li><li>文字数を0にすると、文字列の挿入として使える</li><li>電話番号のマスキングや郵便番号へのハイフン挿入など、位置が決まっているデータの加工に便利</li><li>SUBSTITUTE関数との違いは「位置で指定するか、文字列で指定するか」</li><li>バイト数で指定したい場合はREPLACEB関数を使う</li></ul>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-left/">LEFT関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-right/">RIGHT関数</a>と組み合わせれば、文字列の一部を取り出してから加工するなど、さらに応用の幅が広がります。ぜひ活用してみてください。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-left/">LEFT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-right/">RIGHT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-mid/">MID関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-search/">SEARCH関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-len/">LEN関数の使い方</a></li></ul>



<h3 class="wp-block-heading"><span id="toc20">関数一覧</span></h3>



<p class="wp-block-paragraph">Excel関数の一覧は下記の記事で確認できます。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-list-by-function/">Excel関数 機能別一覧</a></li></ul>



<p class="wp-block-paragraph">エラー値が表示される場合は、下記の記事も参考にしてみてください。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-error-value-list/">Excelのエラー値一覧</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-replace/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのREPLACE関数の使い方｜位置指定で文字列を置換する基本と実務テンプレ</title>
		<link>https://mashukabu.com/spreadsheet-replace-function/</link>
					<comments>https://mashukabu.com/spreadsheet-replace-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 10:41:10 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[FIND関数]]></category>
		<category><![CDATA[REPLACE関数]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[文字列操作]]></category>
		<category><![CDATA[文字列置換]]></category>
		<category><![CDATA[関数の使い方]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4386</guid>

					<description><![CDATA[スプレッドシートのREPLACE関数の使い方を基本から徹底解説。位置指定で文字列を置換する構文・実務テンプレ（市外局番差替・年度更新・伏せ字・ドメイン置換）、SUBSTITUTE/REGEXREPLACEとの違い、FIND関数との組み合わせ応用、ARRAYFORMULA連携、よくあるエラー対処までこの1記事で完結します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで「3文字目から2文字だけ置き換えたい」と思ったことはありませんか。商品コードの一部だけ変更したい、電話番号の市外局番だけ差し替えたい、個人情報を一部マスクしたい。こうした場面で活躍するのが REPLACE関数 です。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>は「何という文字を置き換えるか」を指定する関数ですが、REPLACE関数は「何文字目から何文字分を置き換えるか」を指定します。同じ置換系でもアプローチが正反対なので、使い分けができると業務効率がぐっと上がります。</p>



<p class="wp-block-paragraph">この記事ではスプレッドシートのREPLACE関数について、基本構文から実務テンプレ、<a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a>との組み合わせ応用、SUBSTITUTE・REGEXREPLACE・REPLACEBとの使い分け、エラー対処まで丁寧に解説します。</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">スプレッドシートのREPLACE関数とは？位置指定で文字列を置換する関数</a><ol><li><a href="#toc2" tabindex="0">「位置で置換」が必要になる業務シーン</a></li><li><a href="#toc3" tabindex="0">REPLACE関数が向いていないケース</a></li></ol></li><li><a href="#toc4" tabindex="0">REPLACE関数の書き方（構文と引数）</a></li><li><a href="#toc5" tabindex="0">REPLACE関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">文字数を0にすると「挿入」になる</a></li><li><a href="#toc7" tabindex="0">開始位置以降をすべて置換する</a></li><li><a href="#toc8" tabindex="0">結果は常に文字列型になる</a></li></ol></li><li><a href="#toc9" tabindex="0">REPLACE関数の実務活用パターン</a><ol><li><a href="#toc10" tabindex="0">パターン1: 電話番号の市外局番を一括変更する</a></li><li><a href="#toc11" tabindex="0">パターン2: 管理番号の年度部分を一括更新する</a></li><li><a href="#toc12" tabindex="0">パターン3: 個人情報の伏せ字処理（マスキング）</a></li><li><a href="#toc13" tabindex="0">パターン4: 商品コードのプレフィックス変更</a></li><li><a href="#toc14" tabindex="0">パターン5: メールアドレスのユーザー名マスク</a></li><li><a href="#toc15" tabindex="0">実務での使用シーン早見表</a></li></ol></li><li><a href="#toc16" tabindex="0">FIND関数と組み合わせて動的に位置を指定する</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">FIND関数との組み合わせで注意する点</a></li></ol></li><li><a href="#toc21" tabindex="0">ARRAYFORMULAやネストでREPLACE関数を一気に適用する</a><ol><li><a href="#toc22" tabindex="0">ARRAYFORMULAで列全体に一気に適用する</a></li><li><a href="#toc23" tabindex="0">ネスト（入れ子）で複数箇所を同時置換する</a></li><li><a href="#toc24" tabindex="0">複数箇所の置換はREGEXREPLACEのほうが楽な場合もある</a></li></ol></li><li><a href="#toc25" tabindex="0">REPLACE関数とSUBSTITUTE・REGEXREPLACE・REPLACEBの使い分け</a><ol><li><a href="#toc26" tabindex="0">REPLACE vs SUBSTITUTE</a></li><li><a href="#toc27" tabindex="0">REPLACE vs REGEXREPLACE</a></li><li><a href="#toc28" tabindex="0">REPLACE vs REPLACEB</a></li><li><a href="#toc29" tabindex="0">使い分けフローチャート</a></li></ol></li><li><a href="#toc30" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc31" tabindex="0">#VALUE!エラーが出る</a></li><li><a href="#toc32" tabindex="0">文字数に負の数を指定した場合もエラー</a></li><li><a href="#toc33" tabindex="0">開始位置がテキスト長を超えている場合</a></li><li><a href="#toc34" tabindex="0">空セルを渡した場合</a></li><li><a href="#toc35" tabindex="0">エラー一覧</a></li></ol></li><li><a href="#toc36" tabindex="0">よくある質問</a><ol><li><a href="#toc37" tabindex="0">REPLACE関数とSUBSTITUTE関数はどちらを使うべきですか？</a></li><li><a href="#toc38" tabindex="0">REPLACE関数で複数箇所を一度に置換できますか？</a></li><li><a href="#toc39" tabindex="0">開始位置にテキストの文字数を超える数値を指定したらエラーになりますか？</a></li><li><a href="#toc40" tabindex="0">列全体に一気に適用したい場合はどう書きますか？</a></li><li><a href="#toc41" tabindex="0">ExcelのREPLACE関数とGoogleスプレッドシートのREPLACE関数は同じですか？</a></li><li><a href="#toc42" tabindex="0">文字を削除せずに挿入だけしたい場合はどう書きますか？</a></li><li><a href="#toc43" tabindex="0">REPLACEの結果が文字列になってしまい計算に使えません</a></li><li><a href="#toc44" tabindex="0">大文字小文字を区別した置換はできますか？</a></li></ol></li><li><a href="#toc45" tabindex="0">まとめ</a><ol><li><a href="#toc46" tabindex="0">次に読みたい関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのREPLACE関数とは？位置指定で文字列を置換する関数</span></h2>



<p class="wp-block-paragraph">REPLACE関数は、文字列の中の <strong>指定した位置から指定した文字数分を別の文字に置き換える</strong> 関数です。読み方は「リプレース」。英語の Replace（置き換える）がそのまま関数名になっています。</p>



<p class="wp-block-paragraph">たとえば「ABCDE」の2文字目から3文字分を「XY」に置き換えると「AXYE」になります。位置と長さで置換範囲を決めるので、置き換えたい文字の内容を知らなくても使えるのが最大の特徴です。</p>



<h3 class="wp-block-heading"><span id="toc2">「位置で置換」が必要になる業務シーン</span></h3>



<p class="wp-block-paragraph">実務で位置指定の置換が必要になるのは、データに「固定フォーマット」があるときです。</p>



<ul class="wp-block-list"><li>電話番号の市外局番（先頭2〜3桁）</li><li>管理番号の年度プレフィックス（先頭4桁）</li><li>商品コードのカテゴリ部分（先頭3桁）</li><li>携帯番号の中央4桁（マスキング対象）</li><li>社員番号の所属コード（特定の位置）</li></ul>



<p class="wp-block-paragraph">これらは「内容で検索する」よりも「位置で指定する」ほうが直感的かつ確実です。SUBSTITUTEで「03を06に」と書くと、電話番号以外のセル内の「03」まで置換してしまう事故が起こり得ますが、REPLACEなら位置で指定するので副作用がありません。</p>



<h3 class="wp-block-heading"><span id="toc3">REPLACE関数が向いていないケース</span></h3>



<p class="wp-block-paragraph">逆に、データに固定フォーマットがなく、置換対象がデータごとに違う場所にある場合はREPLACEには向きません。たとえば「メールアドレスからすべての半角スペースを削除したい」のような用途は、<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>や<a href="https://mashukabu.com/spreadsheet-regexreplace-function/">REGEXREPLACE関数</a>のほうが適しています。</p>



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



<p class="wp-block-paragraph">REPLACE関数の構文は次のとおりです。</p>



<pre class="wp-block-code"><code>=REPLACE(テキスト, 開始位置, 文字数, 新しいテキスト)</code></pre>



<p class="wp-block-paragraph">引数は4つあり、すべて必須です。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>型</th><th>説明</th></tr></thead><tbody><tr><td>テキスト</td><td>必須</td><td>文字列</td><td>置換対象のセルまたは文字列</td></tr><tr><td>開始位置</td><td>必須</td><td>整数</td><td>置換を始める位置（1から数える）</td></tr><tr><td>文字数</td><td>必須</td><td>整数（0以上）</td><td>置換する文字の数</td></tr><tr><td>新しいテキスト</td><td>必須</td><td>文字列</td><td>置換後の文字列</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ここで覚えておきたいポイントは3つあります。</p>



<ol class="wp-block-list"><li><strong>開始位置は1始まり</strong>（0や負の数を指定すると <code>#VALUE!</code> エラー）</li><li><strong>文字数は0でもOK</strong>（0なら何も削除せず挿入として機能する）</li><li><strong>すべての引数が必須</strong>（<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>とは違って省略不可）</li></ol>



<p class="wp-block-paragraph">プログラミング言語の文字列操作は0始まりが多いですが、スプレッドシートの文字列関数は<a href="https://mashukabu.com/spreadsheet-len-function/">LEN</a>も<a href="https://mashukabu.com/spreadsheet-mid-function/">MID</a>も<a href="https://mashukabu.com/spreadsheet-find-function/">FIND</a>もすべて1始まりです。慣れるまでは「先頭文字 = 1」と意識して数えてください。</p>



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



<p class="wp-block-paragraph">セルA2に「ABCDEFG」が入っているとします。3文字目から2文字分を「XX」に置き換えてみましょう。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/spreadsheet-sumif-function_01_data_sample-table.png" alt="01 data sample table" /></figure>



<pre class="wp-block-code"><code>=REPLACE(A2, 3, 2, &quot;XX&quot;)  → 「ABXXEFG」</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/02_formula_replace-basic.png" alt="02 formula replace basic" /></figure>



<p class="wp-block-paragraph">3文字目の「C」と4文字目の「D」が「XX」に置き換わりました。開始位置は1始まりなので、A → 1、B → 2、C → 3 と数えています。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/03_result_replace-basic.png" alt="03 result replace basic" /></figure>



<h3 class="wp-block-heading"><span id="toc6">文字数を0にすると「挿入」になる</span></h3>



<p class="wp-block-paragraph">文字数に0を指定すると、元の文字を1文字も削除せずに新しいテキストを挿入できます。これはREPLACE関数の隠れた便利機能です。</p>



<pre class="wp-block-code"><code>=REPLACE(A2, 3, 0, &quot;-&quot;)  → 「AB-CDEFG」</code></pre>



<p class="wp-block-paragraph">3文字目の「C」の前にハイフンが挿入されました。先頭に追加したい場合は開始位置を1にします。</p>



<pre class="wp-block-code"><code>=REPLACE(A2, 1, 0, &quot;★&quot;)  → 「★ABCDEFG」</code></pre>



<p class="wp-block-paragraph">「セルの内容を消さずに何かを差し込みたい」ときは、わざわざ文字列連結（&#038;）を組み合わせなくてもREPLACE一発で書けます。</p>



<h3 class="wp-block-heading"><span id="toc7">開始位置以降をすべて置換する</span></h3>



<p class="wp-block-paragraph">文字数を大きめに指定すると、開始位置から末尾までを置き換えられます。文字数が残りの文字数を超えてもエラーにはなりません。</p>



<pre class="wp-block-code"><code>=REPLACE(A2, 4, 100, &quot;XYZ&quot;)  → 「ABCXYZ」</code></pre>



<p class="wp-block-paragraph">4文字目以降の「DEFG」（4文字）が「XYZ」に置き換わりました。残りが4文字なのに文字数を100にしても問題なく動きます。「この位置から後ろは全部変えたい」ときに、いちいち残り文字数を計算しなくていいテクニックです。</p>



<h3 class="wp-block-heading"><span id="toc8">結果は常に文字列型になる</span></h3>



<p class="wp-block-paragraph">REPLACE関数の戻り値は数値や日付ではなく、常に「文字列型」です。たとえば「2024」（数値）の「20」を「20」に置き換えても、結果は数値の2024ではなく文字列の &#8220;2024&#8221; になります。</p>



<pre class="wp-block-code"><code>=REPLACE(2024, 1, 2, &quot;20&quot;)  → &quot;2024&quot;（文字列）</code></pre>



<p class="wp-block-paragraph">集計や日付計算で使う場合は、後段で <a href="https://mashukabu.com/spreadsheet-value-function/">VALUE関数</a> や <a href="https://mashukabu.com/spreadsheet-datevalue-function/">DATEVALUE関数</a> を組み合わせて型変換してください。</p>



<h2 class="wp-block-heading"><span id="toc9">REPLACE関数の実務活用パターン</span></h2>



<p class="wp-block-paragraph">ここからは実務で頻出するパターンを順に紹介します。コピペで使えるよう、数式と動作例を並べて掲載します。</p>



<h3 class="wp-block-heading"><span id="toc10">パターン1: 電話番号の市外局番を一括変更する</span></h3>



<p class="wp-block-paragraph">拠点移転で全顧客の電話番号の市外局番を変える、というシナリオです。A2に「03-1234-5678」が入っています。</p>



<pre class="wp-block-code"><code>=REPLACE(A2, 1, 2, &quot;06&quot;)  → 「06-1234-5678」</code></pre>



<p class="wp-block-paragraph">1文字目から2文字分（「03」）を「06」に置き換えました。市外局番の桁数が決まっているので、位置指定のREPLACEがぴったりです。</p>



<p class="wp-block-paragraph">SUBSTITUTEで <code>=SUBSTITUTE(A2, "03", "06")</code> と書くと、たまたま電話番号の中に「03」が含まれる場合（例: 「03-0312-1234」）まで置換してしまうリスクがあります。REPLACEなら開始位置が固定なので、こうした副作用が起きません。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/04_result_replace-phone.png" alt="04 result replace phone" /></figure>



<h3 class="wp-block-heading"><span id="toc11">パターン2: 管理番号の年度部分を一括更新する</span></h3>



<p class="wp-block-paragraph">「2024-A001」のような「年度-連番」フォーマットの管理番号を翌年度に更新するケースです。</p>



<pre class="wp-block-code"><code>=REPLACE(A2, 1, 4, &quot;2025&quot;)  → 「2025-A001」</code></pre>



<p class="wp-block-paragraph">先頭4文字の「2024」を「2025」に置き換えました。連番部分はそのままなので、年度切り替え時の一括更新が数式1つで完結します。</p>



<h3 class="wp-block-heading"><span id="toc12">パターン3: 個人情報の伏せ字処理（マスキング）</span></h3>



<p class="wp-block-paragraph">名前や電話番号の一部を「***」で隠す伏せ字処理にもREPLACE関数は役立ちます。A2に「09012345678」（携帯番号）が入っているとします。</p>



<pre class="wp-block-code"><code>=REPLACE(A2, 4, 4, &quot;****&quot;)  → 「090****5678」</code></pre>



<p class="wp-block-paragraph">4文字目から4文字分を「****」に置き換えました。先頭3桁と末尾4桁は残しつつ、中間をマスクできます。個人情報を含む一覧を社外配布する前のサニタイズ処理として定番です。</p>



<p class="wp-block-paragraph">名前の伏せ字にも使えます。A2に「山田太郎」が入っている場合です。</p>



<pre class="wp-block-code"><code>=REPLACE(A2, 2, 1, &quot;○&quot;)  → 「山○太郎」</code></pre>



<p class="wp-block-paragraph">2文字目の「田」を「○」に置き換えて、苗字の一部を伏せました。プライバシー配慮が必要な公開資料で使えます。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン4: 商品コードのプレフィックス変更</span></h3>



<p class="wp-block-paragraph">「ABC-1234」のような「カテゴリプレフィックス-連番」形式の商品コードで、プレフィックスだけを変更したい場合です。</p>



<pre class="wp-block-code"><code>=REPLACE(A2, 1, 3, &quot;XYZ&quot;)  → 「XYZ-1234」</code></pre>



<p class="wp-block-paragraph">先頭3文字を新カテゴリコードに差し替えました。ハイフン以降の連番はそのまま保持されます。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン5: メールアドレスのユーザー名マスク</span></h3>



<p class="wp-block-paragraph">メールアドレスの「@」より前のユーザー名部分を伏せたいケースです。ただしユーザー名の長さはデータごとに違うので、ここはFIND関数と組み合わせます（詳しくは次のセクション）。</p>



<h3 class="wp-block-heading"><span id="toc15">実務での使用シーン早見表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>業務シーン</th><th>数式テンプレ</th><th>用途</th></tr></thead><tbody><tr><td>市外局番変更</td><td><code>=REPLACE(A2,1,2,"06")</code></td><td>拠点移転対応</td></tr><tr><td>年度更新</td><td><code>=REPLACE(A2,1,4,"2025")</code></td><td>年度切り替え</td></tr><tr><td>携帯番号マスク</td><td><code>=REPLACE(A2,4,4,"****")</code></td><td>個人情報配慮</td></tr><tr><td>名前伏せ字</td><td><code>=REPLACE(A2,2,1,"○")</code></td><td>プライバシー保護</td></tr><tr><td>商品コード変更</td><td><code>=REPLACE(A2,1,3,"XYZ")</code></td><td>カテゴリ再編</td></tr><tr><td>先頭への挿入</td><td><code>=REPLACE(A2,1,0,"PRE-")</code></td><td>プレフィックス追加</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc16">FIND関数と組み合わせて動的に位置を指定する</span></h2>



<p class="wp-block-paragraph">ここまでの例は、置き換える位置が「先頭から何文字目」と決まっているケースでした。しかし実務では、データによって位置が変わることもよくあります。</p>



<p class="wp-block-paragraph">そんなときは<a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a>で位置を動的に取得し、REPLACEに渡します。</p>



<h3 class="wp-block-heading"><span id="toc17">メールアドレスのドメイン部分を置き換える</span></h3>



<p class="wp-block-paragraph">A2に「user@old-domain.com」が入っています。「@」より後ろを新しいドメインに差し替えたい場合です。</p>



<pre class="wp-block-code"><code>=REPLACE(A2, FIND(&quot;@&quot;, A2), LEN(A2) - FIND(&quot;@&quot;, A2) + 1, &quot;@new-domain.com&quot;)</code></pre>



<p class="wp-block-paragraph">結果は「user@new-domain.com」です。少し複雑に見えますが、やっていることはシンプルです。</p>



<ol class="wp-block-list"><li><code>FIND("@", A2)</code> → 「@」の位置（5）を取得</li><li><code>LEN(A2) - FIND("@", A2) + 1</code> → 「@」以降の文字数（16）を計算</li><li>REPLACEで「5文字目から16文字分」を新ドメインに置換</li></ol>



<p class="wp-block-paragraph">FIND関数が「@」の位置を自動で調べてくれるので、ユーザー名の長さがバラバラのデータ（user、yamada、a など）でも正しく動作します。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/05_result_replace-find-email.png" alt="05 result replace find email" /></figure>



<h3 class="wp-block-heading"><span id="toc18">区切り文字の前半だけを差し替える</span></h3>



<p class="wp-block-paragraph">A2に「ABC-12345」が入っていて、ハイフンより前の部分を「XYZ」に変えたい場合です。</p>



<pre class="wp-block-code"><code>=REPLACE(A2, 1, FIND(&quot;-&quot;, A2) - 1, &quot;XYZ&quot;)  → 「XYZ-12345」</code></pre>



<p class="wp-block-paragraph"><code>FIND("-", A2) - 1</code> でハイフンの手前までの文字数を計算し、先頭からその分だけ置き換えています。<a href="https://mashukabu.com/spreadsheet-left-function/">LEFT関数</a>で切り出して文字列連結（&#038;）で結合する方法もありますが、REPLACEなら1つの数式で完結します。</p>



<h3 class="wp-block-heading"><span id="toc19">メールアドレスのユーザー名をマスクする</span></h3>



<p class="wp-block-paragraph">A2 に「yamada@example.com」が入っているとします。「@」より前のユーザー名部分を、文字数と同じ数の「*」で伏せたい場合です。</p>



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



<p class="wp-block-paragraph">結果は「<strong><em></strong></em>@example.com」になります。REPT関数でユーザー名と同じ長さの「*」を生成し、それで丸ごと置き換えています。ドメイン部分は残るので「どのドメインのアドレスか」は確認しつつ、個人特定はできない状態にできます。</p>



<h3 class="wp-block-heading"><span id="toc20">FIND関数との組み合わせで注意する点</span></h3>



<ul class="wp-block-list"><li>検索文字が見つからないと FIND は <code>#VALUE!</code> エラーを返します。<code>IFERROR</code> でラップすると安全です</li><li>同じ文字が複数あるときは FIND は最初の位置を返します。N番目を取得したい場合は <a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a> と組み合わせるテクニックがあります</li><li>大文字小文字を無視して位置を取りたい場合は <a href="https://mashukabu.com/spreadsheet-search-function/">SEARCH関数</a> を使います</li></ul>



<h2 class="wp-block-heading"><span id="toc21">ARRAYFORMULAやネストでREPLACE関数を一気に適用する</span></h2>



<p class="wp-block-paragraph">REPLACE関数は1回の呼び出しで「1つのテキスト」「1か所」の置換しかできません。しかし、Googleスプレッドシート特有の機能を組み合わせると、列全体への一括適用や複数箇所の同時置換も実現できます。</p>



<h3 class="wp-block-heading"><span id="toc22">ARRAYFORMULAで列全体に一気に適用する</span></h3>



<p class="wp-block-paragraph">A2:A100 の電話番号データすべてに市外局番変更を適用したい場合、1セル1セルに数式をコピーする必要はありません。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(REPLACE(A2:A100, 1, 2, &quot;06&quot;))</code></pre>



<p class="wp-block-paragraph">たった1つの数式で100行分の置換結果がスピル（自動拡張）されます。元データが増減してもメンテナンスがラクなので、運用するスプレッドシートに組み込むときに便利です。</p>



<p class="wp-block-paragraph">ARRAYFORMULAについては <a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA関数の詳しい使い方</a> を参照してください。</p>



<h3 class="wp-block-heading"><span id="toc23">ネスト（入れ子）で複数箇所を同時置換する</span></h3>



<p class="wp-block-paragraph">1つのセルの中で複数箇所を置換したい場合は、REPLACEを入れ子にします。たとえば「ABCDEFG」の1〜2文字目を「XX」に、5〜6文字目を「YY」に変えたい場合です。</p>



<pre class="wp-block-code"><code>=REPLACE(REPLACE(A2, 5, 2, &quot;YY&quot;), 1, 2, &quot;XX&quot;)  → 「XXCDYYG」</code></pre>



<p class="wp-block-paragraph">ポイントは <strong>後ろの位置から先に置換すること</strong> です。先に前の位置を置換すると、置換結果によって後ろの位置がずれてしまう可能性があります（文字数が変わる置換の場合）。</p>



<p class="wp-block-paragraph">文字数が同じ置換（例: 2文字→2文字）であれば順序は問いませんが、安全のために「後ろから前へ」を癖にしておくと事故が減ります。</p>



<h3 class="wp-block-heading"><span id="toc24">複数箇所の置換はREGEXREPLACEのほうが楽な場合もある</span></h3>



<p class="wp-block-paragraph">3か所以上を一気に置換したい場合、REPLACEのネストは可読性が落ちます。正規表現が使える場合は <a href="https://mashukabu.com/spreadsheet-regexreplace-function/">REGEXREPLACE関数</a> のほうが見やすい数式になります。</p>



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



<p class="wp-block-paragraph">ただし正規表現の学習コストはあるので、用途と頻度に応じて選んでください。</p>



<h2 class="wp-block-heading"><span id="toc25">REPLACE関数とSUBSTITUTE・REGEXREPLACE・REPLACEBの使い分け</span></h2>



<p class="wp-block-paragraph">スプレッドシートには文字列置換系の関数がいくつかあります。用途を正しく選ぶことで、シンプルで保守しやすい数式が書けます。</p>



<h3 class="wp-block-heading"><span id="toc26">REPLACE vs SUBSTITUTE</span></h3>



<p class="wp-block-paragraph">一番よく比較されるのが REPLACE と <a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE</a> です。ひとことで言えば、<strong>SUBSTITUTEは「文字」で指定、REPLACEは「位置」で指定</strong> です。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>REPLACE</th><th>SUBSTITUTE</th></tr></thead><tbody><tr><td>指定方法</td><td>位置と文字数</td><td>検索文字列</td></tr><tr><td>引数の数</td><td>4つ（すべて必須）</td><td>3〜4つ（4番目は省略可）</td></tr><tr><td>複数箇所の置換</td><td>1か所のみ（ネスト要）</td><td>標準で全置換</td></tr><tr><td>大文字/小文字</td><td>区別しない</td><td>区別する</td></tr><tr><td>挿入動作</td><td>文字数=0で可能</td><td>不可</td></tr><tr><td>向く場面</td><td>固定フォーマット・伏せ字</td><td>検索置換・全置換</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">判断基準はシンプルです。</p>



<ul class="wp-block-list"><li>置き換えたい文字の <strong>「内容」がわかっている</strong> → SUBSTITUTE</li><li>置き換えたい文字の <strong>「位置」がわかっている</strong> → REPLACE</li></ul>



<p class="wp-block-paragraph">「ハイフンを全部消したい」ならSUBSTITUTEです。「3文字目から2文字を変えたい」ならREPLACEです。実務で使う頻度はSUBSTITUTEのほうが圧倒的に高いですが、REPLACEは固定フォーマットの一部更新や伏せ字処理など、限定的だが代替の効かない場面で活躍します。</p>



<h3 class="wp-block-heading"><span id="toc27">REPLACE vs REGEXREPLACE</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-regexreplace-function/">REGEXREPLACE関数</a>は正規表現パターンで置換する関数です。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>REPLACE</th><th>REGEXREPLACE</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>非常に高い</td></tr><tr><td>向く場面</td><td>位置が固定</td><td>パターンマッチが必要</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「数字3桁の後にハイフンが来る場所」のような複雑な条件で置換したい場合は REGEXREPLACE が圧倒的に強いです。一方、位置が決まっていて単純な置換ならREPLACEが直感的で速いです。</p>



<h3 class="wp-block-heading"><span id="toc28">REPLACE vs REPLACEB</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-replaceb-function/">REPLACEB関数</a>は「バイト数」で位置と長さを指定する関数です。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>REPLACE</th><th>REPLACEB</th></tr></thead><tbody><tr><td>単位</td><td>文字数</td><td>バイト数</td></tr><tr><td>全角の扱い</td><td>1文字 = 1</td><td>1文字 = 2</td></tr><tr><td>半角の扱い</td><td>1文字 = 1</td><td>1文字 = 1</td></tr><tr><td>向く場面</td><td>一般的な処理</td><td>レガシーシステム連携</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「全角文字を2バイトとして扱うシステムにデータを連携する」など、バイト単位の境界が必要な場面でREPLACEBを使います。日常業務では REPLACE で十分なケースがほとんどです。</p>



<h3 class="wp-block-heading"><span id="toc29">使い分けフローチャート</span></h3>



<p class="wp-block-paragraph">迷ったらこの順で考えてください。</p>



<ol class="wp-block-list"><li><strong>置換場所が正規表現で表現できるパターン</strong> → REGEXREPLACE</li><li><strong>置換場所が「特定の文字列」</strong> → SUBSTITUTE</li><li><strong>置換場所が「先頭からN文字目」</strong> → REPLACE</li><li><strong>バイト単位で処理する必要がある</strong> → REPLACEB</li></ol>



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



<h3 class="wp-block-heading"><span id="toc31">#VALUE!エラーが出る</span></h3>



<p class="wp-block-paragraph">開始位置に0以下の数値を指定するとエラーになります。REPLACE関数の開始位置は <strong>1始まり</strong> です。</p>



<pre class="wp-block-code"><code>=REPLACE(A2, 0, 2, &quot;XX&quot;)  → #VALUE!エラー
=REPLACE(A2, 1, 2, &quot;XX&quot;)  → 正常動作</code></pre>



<p class="wp-block-paragraph">プログラミングに慣れている方は0始まりで考えがちですが、スプレッドシートの文字列関数は1始まりです。<a href="https://mashukabu.com/spreadsheet-mid-function/">MID関数</a>や<a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a>も同じルールです。</p>



<h3 class="wp-block-heading"><span id="toc32">文字数に負の数を指定した場合もエラー</span></h3>



<p class="wp-block-paragraph">文字数（length）はゼロ以上の整数である必要があります。負の数を指定すると <code>#VALUE!</code> エラーです。</p>



<pre class="wp-block-code"><code>=REPLACE(A2, 3, -1, &quot;XX&quot;)  → #VALUE!エラー</code></pre>



<h3 class="wp-block-heading"><span id="toc33">開始位置がテキスト長を超えている場合</span></h3>



<p class="wp-block-paragraph">開始位置がテキストの文字数より大きいと、エラーにはならず <strong>末尾に新しいテキストが追加</strong> されます。</p>



<pre class="wp-block-code"><code>=REPLACE(&quot;ABC&quot;, 10, 2, &quot;XY&quot;)  → 「ABCXY」</code></pre>



<p class="wp-block-paragraph">意図しない結果になりやすいので、開始位置は元のテキストの文字数以内になっているか確認してください。LEN関数で事前チェックする方法もあります。</p>



<pre class="wp-block-code"><code>=IF(開始位置 &gt; LEN(A2), &quot;範囲外&quot;, REPLACE(A2, 開始位置, 文字数, &quot;新テキスト&quot;))</code></pre>



<h3 class="wp-block-heading"><span id="toc34">空セルを渡した場合</span></h3>



<p class="wp-block-paragraph">テキストが空セルや空文字列の場合、エラーにはならず新しいテキストだけが返ります。</p>



<pre class="wp-block-code"><code>=REPLACE(&quot;&quot;, 1, 0, &quot;ABC&quot;)  → 「ABC」</code></pre>



<p class="wp-block-paragraph">元データが空なのに結果が出力される点に注意してください。空セルチェックにはIF関数と組み合わせます。</p>



<pre class="wp-block-code"><code>=IF(A2=&quot;&quot;, &quot;&quot;, REPLACE(A2, 1, 2, &quot;XX&quot;))</code></pre>



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



<figure class="wp-block-table"><table><thead><tr><th>症状</th><th>原因</th><th>対処</th></tr></thead><tbody><tr><td><code>#VALUE!</code></td><td>開始位置が0以下</td><td>開始位置を1以上に</td></tr><tr><td><code>#VALUE!</code></td><td>文字数が負の数</td><td>文字数を0以上に</td></tr><tr><td><code>#VALUE!</code></td><td>FINDで検索文字が見つからない</td><td><code>IFERROR</code> でラップ</td></tr><tr><td>末尾に追記される</td><td>開始位置がテキスト長超過</td><td>LEN関数で事前チェック</td></tr><tr><td>空でも結果が出る</td><td>テキストが空セル</td><td>IF関数で空判定</td></tr><tr><td>数値計算ができない</td><td>戻り値が文字列型</td><td>VALUE関数で型変換</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc36">よくある質問</span></h2>



<h3 class="wp-block-heading"><span id="toc37">REPLACE関数とSUBSTITUTE関数はどちらを使うべきですか？</span></h3>



<p class="wp-block-paragraph">「どこにあるかわかっている」ならREPLACE、「何という文字かわかっている」ならSUBSTITUTEです。たとえば「電話番号の先頭3桁を変えたい」なら位置が決まっているのでREPLACE。「ハイフンをすべて削除したい」なら文字が決まっているのでSUBSTITUTEが向いています。実務ではSUBSTITUTEのほうが使用頻度が高いですが、REPLACEは固定フォーマットの一部更新や伏せ字処理など、限定的だが代替の効かない場面で活躍します。</p>



<h3 class="wp-block-heading"><span id="toc38">REPLACE関数で複数箇所を一度に置換できますか？</span></h3>



<p class="wp-block-paragraph">REPLACE関数は1回の呼び出しで1か所しか置換できません。複数箇所を変えたい場合は、REPLACE関数をネストするか（外側のREPLACEの内側にREPLACEを入れる）、複数の文字を一括変換したい場合は<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>や<a href="https://mashukabu.com/spreadsheet-regexreplace-function/">REGEXREPLACE関数</a>を使うほうが効率的です。たとえば <code>=REPLACE(REPLACE(A1,1,2,"XX"),5,3,"YYY")</code> のように入れ子にします。</p>



<h3 class="wp-block-heading"><span id="toc39">開始位置にテキストの文字数を超える数値を指定したらエラーになりますか？</span></h3>



<p class="wp-block-paragraph">エラーにはなりません。開始位置が元のテキストの文字数を超えた場合、テキストの末尾に新しいテキストが追加されます。たとえば <code>=REPLACE("ABC",10,2,"XY")</code> の結果は「ABCXY」になります。意図しない結果になりやすいので、<a href="https://mashukabu.com/spreadsheet-len-function/">LEN関数</a>で文字数をチェックしてから使うと安全です。</p>



<h3 class="wp-block-heading"><span id="toc40">列全体に一気に適用したい場合はどう書きますか？</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA関数</a>でラップすると列全体に一括適用できます。たとえば <code>=ARRAYFORMULA(REPLACE(A2:A100, 1, 2, "06"))</code> のように書けば、A2からA100の全行に一発で適用されます。1セルずつ数式をコピーする必要がないので、運用するスプレッドシートに組み込むときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc41">ExcelのREPLACE関数とGoogleスプレッドシートのREPLACE関数は同じですか？</span></h3>



<p class="wp-block-paragraph">はい、機能は完全に同じです。構文・動作・エラーの挙動まですべて互換性があります。ExcelとGoogleスプレッドシート間でxlsxファイルをやり取りしても計算結果は変わりません。なお、バイト数で位置を指定する <a href="https://mashukabu.com/spreadsheet-replaceb-function/">REPLACEB関数</a> もExcel・スプレッドシート双方にあり、全角文字の処理が必要な場面で役立ちます。</p>



<h3 class="wp-block-heading"><span id="toc42">文字を削除せずに挿入だけしたい場合はどう書きますか？</span></h3>



<p class="wp-block-paragraph">文字数を0に指定すれば、元の文字を1文字も消さずに新しいテキストを挿入できます。<code>=REPLACE(A2, 3, 0, "-")</code> と書けば3文字目の前にハイフンが挿入されます。先頭に追加したい場合は開始位置を1にして <code>=REPLACE(A2, 1, 0, "PRE-")</code> とすればプレフィックスとして機能します。文字列連結（&#038;）を使わずに1関数で書けるので、ARRAYFORMULAとの相性も良いです。</p>



<h3 class="wp-block-heading"><span id="toc43">REPLACEの結果が文字列になってしまい計算に使えません</span></h3>



<p class="wp-block-paragraph">REPLACE関数の戻り値は常に文字列型です。数値として扱いたい場合は <a href="https://mashukabu.com/spreadsheet-value-function/">VALUE関数</a> でラップしてください。たとえば <code>=VALUE(REPLACE("2024", 1, 2, "20"))</code> とすれば結果が数値の2024になります。日付として扱いたい場合は <a href="https://mashukabu.com/spreadsheet-datevalue-function/">DATEVALUE関数</a> を使います。</p>



<h3 class="wp-block-heading"><span id="toc44">大文字小文字を区別した置換はできますか？</span></h3>



<p class="wp-block-paragraph">REPLACE関数は位置指定なので、大文字小文字の区別という概念がそもそもありません。「大文字のAだけを置換したい」のように内容で区別したい場合は<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>（大文字小文字を区別する）を使ってください。大文字小文字を区別せずに検索したい場合は <a href="https://mashukabu.com/spreadsheet-search-function/">SEARCH関数</a> との組み合わせが選択肢になります。</p>



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



<p class="wp-block-paragraph">REPLACE関数の要点を整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>ポイント</th><th>内容</th></tr></thead><tbody><tr><td>基本構文</td><td><code>=REPLACE(テキスト, 開始位置, 文字数, 新しいテキスト)</code></td></tr><tr><td>引数</td><td>4つすべて必須</td></tr><tr><td>開始位置</td><td>1始まり（0以下は <code>#VALUE!</code>）</td></tr><tr><td>文字数0</td><td>削除せず挿入として機能</td></tr><tr><td>文字数超過</td><td>エラーにならず末尾まで置換</td></tr><tr><td>位置超過</td><td>エラーにならず末尾に追記</td></tr><tr><td>戻り値</td><td>常に文字列型</td></tr><tr><td>一括適用</td><td>ARRAYFORMULAでラップ</td></tr><tr><td>複数箇所</td><td>ネストまたはREGEXREPLACE</td></tr><tr><td>SUBSTITUTEとの違い</td><td>SUBSTITUTE=文字指定、REPLACE=位置指定</td></tr><tr><td>Excel互換</td><td>完全互換</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">REPLACE関数は「何文字目から何文字分」と位置で指定する置換関数です。固定フォーマットの一部変更や個人情報のマスク、年度プレフィックスの更新など、位置が決まっている場面で大活躍します。</p>



<p class="wp-block-paragraph">まずは市外局番の差し替えや伏せ字処理から試してみてください。慣れてきたら<a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a>と組み合わせて動的な位置指定にチャレンジし、最終的には<a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA</a>で列全体を一括処理できるようになると、業務効率が一段階上がりますよ。</p>



<h3 class="wp-block-heading"><span id="toc46">次に読みたい関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a> &#8211; 文字列指定で全置換</li><li><a href="https://mashukabu.com/spreadsheet-regexreplace-function/">REGEXREPLACE関数</a> &#8211; 正規表現で柔軟に置換</li><li><a href="https://mashukabu.com/spreadsheet-replaceb-function/">REPLACEB関数</a> &#8211; バイト数で位置指定</li><li><a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a> &#8211; 文字列の位置を取得</li><li><a href="https://mashukabu.com/spreadsheet-len-function/">LEN関数</a> &#8211; 文字数をカウント</li><li><a href="https://mashukabu.com/spreadsheet-mid-function/">MID関数</a> &#8211; 文字列の途中を抽出</li><li><a href="https://mashukabu.com/spreadsheet-left-function/">LEFT関数</a> &#8211; 文字列の先頭を抽出</li><li><a href="https://mashukabu.com/spreadsheet-right-function/">RIGHT関数</a> &#8211; 文字列の末尾を抽出</li><li><a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA関数</a> &#8211; 範囲一括処理</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-replace-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのSUBSTITUTE関数の使い方｜文字列置換の基本から応用まで</title>
		<link>https://mashukabu.com/spreadsheet-substitute-function/</link>
					<comments>https://mashukabu.com/spreadsheet-substitute-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 18 Mar 2026 22:34:25 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[REGEXREPLACE]]></category>
		<category><![CDATA[REPLACE関数]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[文字列操作]]></category>
		<category><![CDATA[文字列置換]]></category>
		<category><![CDATA[関数の使い方]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4256</guid>

					<description><![CDATA[スプレッドシートのSUBSTITUTE関数の基本から応用まで解説。第4引数で特定番目だけ置換、ネストで複数文字列を一括置換する方法、REPLACEとの違いも丁寧に説明します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで「この文字を別の文字に置き換えたい」と思ったことはありませんか？電話番号のハイフンを消したい、データのカッコを一括で外したい。手作業で直すと時間がかかりますし、何百行もあると修正漏れが怖いですよね。</p>



<p class="wp-block-paragraph">SUBSTITUTE関数を使えば、指定した文字列をまとめて置換できます。この記事ではスプレッドシートでの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">スプレッドシートのSUBSTITUTE関数の使い方：基本構文と引数の役割</a><ol><li><a href="#toc2" tabindex="0">4つの引数の役割</a></li><li><a href="#toc3" tabindex="0">基本的な使い方</a></li></ol></li><li><a href="#toc4" tabindex="0">SUBSTITUTE関数でよく使う実務パターン</a><ol><li><a href="#toc5" tabindex="0">スペース・改行・不要文字を削除する</a></li><li><a href="#toc6" tabindex="0">電話番号のハイフンを消す</a></li><li><a href="#toc7" tabindex="0">複数の文字列を一括置換する（ネストSUBSTITUTE）</a></li></ol></li><li><a href="#toc8" tabindex="0">第4引数で「何番目だけ」を指定する方法</a><ol><li><a href="#toc9" tabindex="0">同じ文字が複数ある場合の挙動</a></li><li><a href="#toc10" tabindex="0">実務活用例</a></li></ol></li><li><a href="#toc11" tabindex="0">SUBSTITUTE・REPLACE・REGEXREPLACEの使い分け</a><ol><li><a href="#toc12" tabindex="0">3関数の比較表</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">全角・半角の罠</a></li></ol></li><li><a href="#toc16" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのSUBSTITUTE関数の使い方：基本構文と引数の役割</span></h2>



<p class="wp-block-paragraph">SUBSTITUTE関数は、文字列の中から<strong>指定した文字を別の文字に置き換える</strong>関数です。読み方は「サブスティテュート」。英語の「Substitute（代わりに置く）」が名前の由来です。</p>



<p class="wp-block-paragraph">たとえば「東京都渋谷区」の「渋谷」を「新宿」に置き換えて「東京都新宿区」にできます。Excelの「検索と置換」機能のように使えますが、数式なので元データを壊さずに結果を得られるのがポイントです。</p>



<h3 class="wp-block-heading"><span id="toc2">4つの引数の役割</span></h3>



<pre class="wp-block-code"><code>=SUBSTITUTE(対象テキスト, 検索文字列, 置換文字列, [出現回数])</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>置き換え後の文字列（空文字&#8221;&#8221;で削除）</td></tr><tr><td>出現回数</td><td>省略可</td><td>何番目の一致だけを置換するか（省略で全置換）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">第4引数は省略するケースがほとんどです。省略すると一致する文字列を<strong>すべて</strong>置き換えます。</p>



<h3 class="wp-block-heading"><span id="toc3">基本的な使い方</span></h3>



<p class="wp-block-paragraph">セルA2に「2024/03/18」が入っているとします。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A2, &quot;/&quot;, &quot;-&quot;)  → 「2024-03-18」</code></pre>



<p class="wp-block-paragraph">スラッシュをハイフンに置き換えました。対象テキストに「/」が2つありますが、第4引数を省略しているので両方とも置き換わります。</p>



<p class="wp-block-paragraph">置換文字列に空文字（&#8221;&#8221;）を指定すれば、文字の<strong>削除</strong>としても使えます。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A2, &quot;/&quot;, &quot;&quot;)  → 「20240318」</code></pre>



<p class="wp-block-paragraph">検索文字列が見つからなくてもエラーにはなりません。元テキストがそのまま返るだけなので、「置換できていない」事故に気づきにくいのです。</p>



<h2 class="wp-block-heading"><span id="toc4">SUBSTITUTE関数でよく使う実務パターン</span></h2>



<h3 class="wp-block-heading"><span id="toc5">スペース・改行・不要文字を削除する</span></h3>



<p class="wp-block-paragraph">データのコピペで混入する余分なスペースや改行は、SUBSTITUTE関数で一掃できます。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A2, &quot; &quot;, &quot;&quot;)       → 半角スペースを削除
=SUBSTITUTE(A2, &quot;　&quot;, &quot;&quot;)      → 全角スペースを削除
=SUBSTITUTE(A2, CHAR(10), &quot;&quot;)  → 改行を削除</code></pre>



<p class="wp-block-paragraph">改行は目に見えないので直接入力できません。<code>CHAR(10)</code>で改行コードを指定するのがコツです。</p>



<h3 class="wp-block-heading"><span id="toc6">電話番号のハイフンを消す</span></h3>



<p class="wp-block-paragraph">電話番号を「数字だけ」にしたい場面はよくありますよね。</p>



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



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/02_formula_substitute-basic.png" alt="_images/spreadsheet-substitute-function/02_formula_substitute-basic.png" /></figure>



<p class="wp-block-paragraph">A2に「03-1234-5678」が入っていれば「0312345678」が返ります。ハイフンが2つあっても全置換なので1回の数式で完了です。</p>



<p class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/spreadsheet-substitute-function/01_data_phone-numbers.png/">_images/spreadsheet-substitute-function/01_data_phone-numbers.png</a></p>



<h3 class="wp-block-heading"><span id="toc7">複数の文字列を一括置換する（ネストSUBSTITUTE）</span></h3>



<p class="wp-block-paragraph">SUBSTITUTE関数は1回の呼び出しで1種類の文字しか置換できません。複数の文字を置き換えたい場合は、SUBSTITUTE関数を入れ子（ネスト）にします。</p>



<p class="wp-block-paragraph">たとえばA2に「(株)ABC商事」が入っていて、カッコを両方消したい場合です。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(SUBSTITUTE(A2, &quot;(&quot;, &quot;&quot;), &quot;)&quot;, &quot;&quot;)  → 「株ABC商事」</code></pre>



<p class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/spreadsheet-substitute-function/04_formula_substitute-nest.png/">_images/spreadsheet-substitute-function/04_formula_substitute-nest.png</a></p>



<p class="wp-block-paragraph">ちょっとむずかしく見えますが、やっていることはシンプルです。</p>



<ol class="wp-block-list"><li>内側の<code>SUBSTITUTE(A2, "(", "")</code>で「(」を削除 → 「株)ABC商事」</li><li>外側の<code>SUBSTITUTE(..., ")", "")</code>で「)」を削除 → 「株ABC商事」</li></ol>



<p class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/spreadsheet-substitute-function/05_result_substitute-nest.png/">_images/spreadsheet-substitute-function/05_result_substitute-nest.png</a></p>



<p class="wp-block-paragraph">3つ以上の文字を消したいときは、さらにネストを重ねます。</p>



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



<p class="wp-block-paragraph">ネストが深くなると読みにくくなります。3段以上になる場合は、後述するREGEXREPLACE関数のほうがすっきり書けますよ。</p>



<h2 class="wp-block-heading"><span id="toc8">第4引数で「何番目だけ」を指定する方法</span></h2>



<h3 class="wp-block-heading"><span id="toc9">同じ文字が複数ある場合の挙動</span></h3>



<p class="wp-block-paragraph">第4引数を省略するとすべて置換されます。しかし「1番目だけ」「3番目だけ」を置き換えたい場合もありますよね。</p>



<p class="wp-block-paragraph">A2に「りんご-みかん-りんご-ぶどう」が入っています。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A2, &quot;りんご&quot;, &quot;バナナ&quot;)     → 「バナナ-みかん-バナナ-ぶどう」
=SUBSTITUTE(A2, &quot;りんご&quot;, &quot;バナナ&quot;, 1)  → 「バナナ-みかん-りんご-ぶどう」
=SUBSTITUTE(A2, &quot;りんご&quot;, &quot;バナナ&quot;, 2)  → 「りんご-みかん-バナナ-ぶどう」</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/06_result_substitute-nth.png" alt="_images/spreadsheet-substitute-function/06_result_substitute-nth.png" /></figure>



<p class="wp-block-paragraph">第4引数に「1」を指定すると、最初の「りんご」だけが置き換わります。「2」なら2番目だけです。</p>



<h3 class="wp-block-heading"><span id="toc10">実務活用例</span></h3>



<p class="wp-block-paragraph">商品コードが「A-001-A-B」のように複数のハイフンで区切られているとします。2番目のハイフンだけをスラッシュに変えたい場合です。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A2, &quot;-&quot;, &quot;/&quot;, 2)  → 「A-001/A-B」</code></pre>



<p class="wp-block-paragraph">全体を変えずにピンポイントで置換できるのが第4引数の強みです。使う場面は限られますが、覚えておくと便利ですよ。</p>



<h2 class="wp-block-heading"><span id="toc11">SUBSTITUTE・REPLACE・REGEXREPLACEの使い分け</span></h2>



<p class="wp-block-paragraph">スプレッドシートには文字列を置換する関数が3つあります。それぞれ「何を基準に置き換えるか」が違います。</p>



<h3 class="wp-block-heading"><span id="toc12">3関数の比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>SUBSTITUTE</th><th>REPLACE</th><th>REGEXREPLACE</th></tr></thead><tbody><tr><td>置換の指定方法</td><td>文字列検索（何という文字か）</td><td>位置指定（何文字目から何文字分）</td><td>正規表現パターン</td></tr><tr><td>大文字/小文字</td><td>区別する</td><td>位置指定のため無関係</td><td>フラグで制御可能</td></tr><tr><td>複数箇所の置換</td><td>省略で全置換</td><td>1か所のみ</td><td>パターン一致で全置換</td></tr><tr><td>複数種類の文字</td><td>ネストが必要</td><td>不可</td><td>1つの正規表現で対応可能</td></tr><tr><td>難易度</td><td>低い</td><td>低い</td><td>正規表現の知識が必要</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い分けの判断基準はシンプルです。</p>



<ul class="wp-block-list"><li><strong>特定の文字列を置き換えたい</strong> → SUBSTITUTE</li><li><strong>特定の位置の文字を置き換えたい</strong> → REPLACE</li><li><strong>パターンで柔軟に置き換えたい</strong> → REGEXREPLACE</li></ul>



<p class="wp-block-paragraph">たとえば「3文字目から2文字を消す」ならREPLACEです。「ハイフンを全部消す」ならSUBSTITUTEです。「数字だけ消す」「カッコと中身をまとめて消す」のようにパターンで指定したいならREGEXREPLACEの出番です。</p>



<p class="wp-block-paragraph">実務で一番使うのはSUBSTITUTEです。まずはSUBSTITUTEを覚えてください。対応できない場面が出てきたら、REPLACEやREGEXREPLACEを検討してみましょう。</p>



<h2 class="wp-block-heading"><span id="toc13">よくある失敗と対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc14">大文字・小文字の区別に注意</span></h3>



<p class="wp-block-paragraph">SUBSTITUTE関数は<strong>大文字と小文字を区別</strong>します。これは<a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a>と同じ仕様です。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(&quot;ABC&quot;, &quot;a&quot;, &quot;x&quot;)  → 「ABC」（変化なし）
=SUBSTITUTE(&quot;ABC&quot;, &quot;A&quot;, &quot;x&quot;)  → 「xBC」</code></pre>



<p class="wp-block-paragraph">小文字の「a」を検索しても、大文字の「A」にはヒットしません。エラーにはなりません。元テキストがそのまま返るだけなので、「置換できていない」事故に気づきにくいのです。</p>



<p class="wp-block-paragraph">大文字小文字を無視して置換したいときは、LOWERやUPPERで統一してから使います。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(LOWER(A2), &quot;abc&quot;, &quot;xyz&quot;)</code></pre>



<p class="wp-block-paragraph">ただしこの方法だと出力結果もすべて小文字になります。元の大文字小文字を保持したい場合はREGEXREPLACE関数の<code>(?i)</code>フラグを検討してください。</p>



<h3 class="wp-block-heading"><span id="toc15">全角・半角の罠</span></h3>



<p class="wp-block-paragraph">もうひとつよくあるのが、全角と半角の違いに気づかないケースです。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A2, &quot; &quot;, &quot;&quot;)   → 半角スペースだけ削除
=SUBSTITUTE(A2, &quot;　&quot;, &quot;&quot;)  → 全角スペースだけ削除</code></pre>



<p class="wp-block-paragraph">半角スペースと全角スペースは別の文字として扱われます。見た目がほぼ同じなので気づきにくいのがやっかいです。</p>



<p class="wp-block-paragraph">「スペースを消したはずなのに残っている」と思ったら、全角・半角の混在を疑ってください。両方消したい場合はネストで対応します。</p>



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



<p class="wp-block-paragraph">ハイフンも同様です。半角「-」と全角「ー」は別物なので注意してくださいね。</p>



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



<p class="wp-block-paragraph">SUBSTITUTE関数の要点を整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>ポイント</th><th>内容</th></tr></thead><tbody><tr><td>基本構文</td><td><code>=SUBSTITUTE(対象, 検索文字列, 置換文字列, [出現回数])</code></td></tr><tr><td>全置換</td><td>第4引数を省略するとすべて置換</td></tr><tr><td>文字の削除</td><td>置換文字列に空文字（&#8221;&#8221;）を指定</td></tr><tr><td>大文字/小文字</td><td>区別する（LOWERで回避可能）</td></tr><tr><td>全角/半角</td><td>区別する（ネストで両対応）</td></tr><tr><td>見つからない場合</td><td>エラーにならず元テキストを返す</td></tr><tr><td>複数種類の置換</td><td>ネストで対応（3種以上はREGEXREPLACE推奨）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">SUBSTITUTE関数は「この文字を別の文字に変えたい」というシンプルな要望に応える関数です。電話番号のハイフン削除やスペースの除去など、日常的なデータ整理で大活躍します。</p>



<p class="wp-block-paragraph">まずはハイフンやスペースの削除から試してみてください。慣れてきたらネストで複数文字の一括置換に挑戦して、データクリーニングの幅を広げていきましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-substitute-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Excelの文字列関数まとめ｜抽出・結合・分割・置換を実務シーン別に解説</title>
		<link>https://mashukabu.com/excel-string-functions-guide/</link>
					<comments>https://mashukabu.com/excel-string-functions-guide/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 18 Mar 2026 12:36:46 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[CONCAT]]></category>
		<category><![CDATA[Excel関数まとめ]]></category>
		<category><![CDATA[FIND]]></category>
		<category><![CDATA[LEFT]]></category>
		<category><![CDATA[LEN]]></category>
		<category><![CDATA[MID]]></category>
		<category><![CDATA[RIGHT]]></category>
		<category><![CDATA[SUBSTITUTE]]></category>
		<category><![CDATA[TEXTJOIN]]></category>
		<category><![CDATA[TEXTSPLIT]]></category>
		<category><![CDATA[文字列分割]]></category>
		<category><![CDATA[文字列抽出]]></category>
		<category><![CDATA[文字列結合]]></category>
		<category><![CDATA[文字列置換]]></category>
		<category><![CDATA[文字列関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4030</guid>

					<description><![CDATA[Excelの文字列関数を実務シーン別に整理。氏名から姓だけ取り出す、住所から都道府県を除く、CSV分割、文字列結合まで、LEFT・FIND・SUBSTITUTE・TEXTSPLIT・TEXTJOINなどの使い分けを逆引き一覧と比較表で解説します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Excelで「氏名から姓だけ取り出したい」「カンマ区切りのデータを列に分けたい」と悩んだことはありませんか。文字列関数は種類が多く、どれを使えばいいか迷いますよね。</p>



<p class="wp-block-paragraph">この記事では、<strong>抽出・結合・分割・置換</strong>の4カテゴリに分けて文字列関数の使い分けを整理しました。実務シーンに合わせて「この作業にはこの関数」がすぐわかる逆引きインデックスも用意しています。</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">文字列関数の逆引きインデックス【やりたいこと別】</a></li><li><a href="#toc2" tabindex="0">文字列を「抽出」する関数の使い方</a><ol><li><a href="#toc3" tabindex="0">LEFT関数 + FIND関数で姓だけ取り出す</a></li><li><a href="#toc4" tabindex="0">RIGHT関数 + LEN関数で名だけ取り出す</a></li><li><a href="#toc5" tabindex="0">MID関数で途中の文字列を取り出す</a></li><li><a href="#toc6" tabindex="0">FIND関数とSEARCH関数の違い</a></li><li><a href="#toc7" tabindex="0">M365ならTEXTBEFORE・TEXTAFTERが便利</a></li></ol></li><li><a href="#toc8" tabindex="0">文字列を「結合」する関数の使い方</a><ol><li><a href="#toc9" tabindex="0">&#038;演算子でシンプルに結合する</a></li><li><a href="#toc10" tabindex="0">CONCAT関数でセル範囲を一括結合する</a></li><li><a href="#toc11" tabindex="0">TEXTJOIN関数で区切り文字付きの結合をする</a></li><li><a href="#toc12" tabindex="0">結合関数の選び方</a></li></ol></li><li><a href="#toc13" tabindex="0">文字列を「分割」する関数の使い方</a><ol><li><a href="#toc14" tabindex="0">TEXTSPLIT関数でカンマ区切りデータを列に分ける</a></li><li><a href="#toc15" tabindex="0">TEXTSPLIT が使えない環境での分割テクニック</a></li><li><a href="#toc16" tabindex="0">「区切り位置」機能との比較</a></li></ol></li><li><a href="#toc17" tabindex="0">文字列を「置換・整形」する関数の使い方</a><ol><li><a href="#toc18" tabindex="0">SUBSTITUTE関数で特定の文字列を置き換える</a></li><li><a href="#toc19" tabindex="0">REPLACE関数で位置を指定して置き換える</a></li><li><a href="#toc20" tabindex="0">TRIM関数でスペースを整える</a></li><li><a href="#toc21" tabindex="0">大文字・小文字・全角・半角の変換</a></li></ol></li><li><a href="#toc22" tabindex="0">新旧関数の対比表で文字列関数を整理</a></li><li><a href="#toc23" tabindex="0">文字列関数でよくあるエラーと対処法</a></li><li><a href="#toc24" tabindex="0">まとめ</a><ol><li><a href="#toc25" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">文字列関数の逆引きインデックス【やりたいこと別】</span></h2>



<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>左端からN文字を取り出す</td><td>LEFT</td><td><code>=LEFT(A1,3)</code></td></tr><tr><td>右端からN文字を取り出す</td><td>RIGHT</td><td><code>=RIGHT(A1,4)</code></td></tr><tr><td>途中からN文字を取り出す</td><td><a href="https://mashukabu.com/excel-function-howto-use-mid/">MID</a></td><td><code>=MID(A1,2,3)</code></td></tr><tr><td>特定の文字の位置を調べる</td><td>FIND / SEARCH</td><td><code>=FIND("@",A1)</code></td></tr><tr><td>文字数を数える</td><td><a href="https://mashukabu.com/excel-function-howto-use-len/">LEN</a></td><td><code>=LEN(A1)</code></td></tr><tr><td>文字列をそのまま結合する</td><td><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT</a> / &#038;</td><td><code>=A1&B1</code></td></tr><tr><td>区切り文字を入れて結合する</td><td><a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN</a></td><td><code>=TEXTJOIN(",",TRUE,A1:C1)</code></td></tr><tr><td>区切り文字で列に分割する</td><td><a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT</a></td><td><code>=TEXTSPLIT(A1,",")</code></td></tr><tr><td>区切り文字の前だけ取り出す</td><td><a href="https://mashukabu.com/excel-function-howto-use-textbefore/">TEXTBEFORE</a></td><td><code>=TEXTBEFORE(A1,"@")</code></td></tr><tr><td>区切り文字の後だけ取り出す</td><td><a href="https://mashukabu.com/excel-function-howto-use-textafter/">TEXTAFTER</a></td><td><code>=TEXTAFTER(A1,"@")</code></td></tr><tr><td>特定の文字列を別の文字列に置き換える</td><td><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE</a></td><td><code>=SUBSTITUTE(A1,"-","")</code></td></tr><tr><td>位置を指定して文字列を置き換える</td><td>REPLACE</td><td><code>=REPLACE(A1,1,3,"新")</code></td></tr><tr><td>余分なスペースを除去する</td><td><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM</a></td><td><code>=TRIM(A1)</code></td></tr><tr><td>大文字に変換する</td><td><a href="https://mashukabu.com/excel-function-howto-use-upper/">UPPER</a></td><td><code>=UPPER(A1)</code></td></tr><tr><td>小文字に変換する</td><td><a href="https://mashukabu.com/excel-function-howto-use-lower/">LOWER</a></td><td><code>=LOWER(A1)</code></td></tr><tr><td>先頭だけ大文字にする</td><td><a href="https://mashukabu.com/excel-function-howto-use-proper/">PROPER</a></td><td><code>=PROPER(A1)</code></td></tr><tr><td>全角を半角に変換する</td><td><a href="https://mashukabu.com/excel-function-howto-use-asc/">ASC</a></td><td><code>=ASC(A1)</code></td></tr><tr><td>数値を指定の表示形式に変換する</td><td><a href="https://mashukabu.com/excel-function-howto-use-text/">TEXT</a></td><td><code>=TEXT(A1,"#,##0")</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>このインデックスをブックマークしておくと便利です。「どの関数だっけ？」と迷ったときにすぐ確認できます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">文字列を「抽出」する関数の使い方</span></h2>



<p class="wp-block-paragraph">文字列の一部だけを取り出すには、LEFT・RIGHT・MID・FIND（SEARCH）を組み合わせます。</p>



<h3 class="wp-block-heading"><span id="toc3">LEFT関数 + FIND関数で姓だけ取り出す</span></h3>



<p class="wp-block-paragraph">氏名リストから姓だけを取り出すケースです。「山田 太郎」のようにスペースで区切られた氏名を想定します。</p>



<pre class="wp-block-code"><code>=LEFT(A1,FIND(&quot; &quot;,A1)-1)</code></pre>



<p class="wp-block-paragraph">この数式がやっていることはシンプルです。</p>



<ol class="wp-block-list"><li><code>FIND(" ",A1)</code> でスペースの位置を調べる（例: 3）</li><li>スペースの手前までが姓なので <code>-1</code> する（例: 2）</li><li><code>LEFT(A1,2)</code> で左端から2文字を取り出す（例: 山田）</li></ol>



<p class="wp-block-paragraph">LEFT関数は「左端から何文字」と決まっている場合にそのまま使えます。たとえば左端から3文字なら次のように書きます。</p>



<pre class="wp-block-code"><code>=LEFT(A1,3)</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>FIND関数は大文字と小文字を区別します。区別せずに検索したい場合は、代わりにSEARCH関数を使ってください。SEARCH関数はワイルドカード（<code>*</code> や <code>?</code>）にも対応しています。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc4">RIGHT関数 + LEN関数で名だけ取り出す</span></h3>



<p class="wp-block-paragraph">今度は名前の方を取り出してみましょう。RIGHT関数で右端から取り出します。</p>



<pre class="wp-block-code"><code>=RIGHT(A1,LEN(A1)-FIND(&quot; &quot;,A1))</code></pre>



<p class="wp-block-paragraph">取り出す文字数の計算がポイントです。</p>



<ol class="wp-block-list"><li><code>LEN(A1)</code> で全体の文字数を取得（例: 5）</li><li><code>FIND(" ",A1)</code> でスペースの位置を取得（例: 3）</li><li>全体の文字数からスペースの位置を引く（例: 5-3=2）</li><li><code>RIGHT(A1,2)</code> で右端から2文字を取り出す（例: 太郎）</li></ol>



<h3 class="wp-block-heading"><span id="toc5">MID関数で途中の文字列を取り出す</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-mid/">MID関数</a>は「何文字目から何文字」を指定して取り出せます。</p>



<p class="wp-block-paragraph"><strong>5文字目から4文字を取り出す場合:</strong></p>



<pre class="wp-block-code"><code>=MID(A1,5,4)</code></pre>



<p class="wp-block-paragraph">たとえば社員番号「DEPT-1234-A」から数字部分だけを取り出す場合です。6文字目から4文字で「1234」が得られます。</p>



<pre class="wp-block-code"><code>=MID(A1,6,4)</code></pre>



<p class="wp-block-paragraph">MID関数は開始位置と文字数が固定の場合に便利です。位置が可変の場合はFIND関数と組み合わせます。</p>



<h3 class="wp-block-heading"><span id="toc6">FIND関数とSEARCH関数の違い</span></h3>



<p class="wp-block-paragraph">どちらも「特定の文字が何文字目にあるか」を返す関数です。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>FIND</th><th>SEARCH</th></tr></thead><tbody><tr><td>大文字・小文字</td><td>区別する</td><td>区別しない</td></tr><tr><td>ワイルドカード</td><td>使えない</td><td><code>*</code> <code>?</code> が使える</td></tr><tr><td>用途</td><td>完全一致で位置を調べる</td><td>あいまい検索で位置を調べる</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">実務では「スペースの位置を調べる」「@の位置を調べる」のような用途が多いため、FIND関数で十分な場面がほとんどです。</p>



<h3 class="wp-block-heading"><span id="toc7">M365ならTEXTBEFORE・TEXTAFTERが便利</span></h3>



<p class="wp-block-paragraph">Microsoft 365をお使いなら、LEFT+FINDの組み合わせを1つの関数で置き換えられます。</p>



<p class="wp-block-paragraph"><strong>スペースの前（姓）を取り出す場合:</strong></p>



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



<p class="wp-block-paragraph"><strong>スペースの後（名）を取り出す場合:</strong></p>



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



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-textbefore/">TEXTBEFORE関数</a>と<a href="https://mashukabu.com/excel-function-howto-use-textafter/">TEXTAFTER関数</a>は区切り文字を指定するだけでOKです。LEFT+FIND+LENの複雑な計算が不要になります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>TEXTBEFORE・TEXTAFTER・TEXTSPLITはMicrosoft 365専用の関数です。Excel 2021以前では使用できません。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc8">文字列を「結合」する関数の使い方</span></h2>



<p class="wp-block-paragraph">複数のセルの値をひとつにまとめるには、&#038;演算子・CONCAT・TEXTJOIN・CONCATENATEを使います。</p>



<h3 class="wp-block-heading"><span id="toc9">&#038;演算子でシンプルに結合する</span></h3>



<p class="wp-block-paragraph">もっとも基本的な結合方法です。</p>



<p class="wp-block-paragraph"><strong>姓と名をスペース区切りで結合する場合:</strong></p>



<pre class="wp-block-code"><code>=A1&amp;&quot; &quot;&amp;B1</code></pre>



<p class="wp-block-paragraph">セルの数が少ない（2~3個）場合は&#038;演算子がわかりやすいです。ハイフン区切りで3つ結合するならこう書きます。</p>



<pre class="wp-block-code"><code>=A1&amp;&quot;-&quot;&amp;B1&amp;&quot;-&quot;&amp;C1</code></pre>



<h3 class="wp-block-heading"><span id="toc10">CONCAT関数でセル範囲を一括結合する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT関数</a>はセル範囲をまるごと結合できます。</p>



<p class="wp-block-paragraph"><strong>A1からD1まで一括結合する場合:</strong></p>



<pre class="wp-block-code"><code>=CONCAT(A1:D1)</code></pre>



<p class="wp-block-paragraph">&#038;演算子と違い、範囲指定ができるのがメリットです。ただし区切り文字を自動で入れる機能はありません。</p>



<h3 class="wp-block-heading"><span id="toc11">TEXTJOIN関数で区切り文字付きの結合をする</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN関数</a>は区切り文字を指定して結合できます。</p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;,&quot;,TRUE,A1:D1)</code></pre>



<p class="wp-block-paragraph">各引数の意味はこちらです。</p>



<ul class="wp-block-list"><li>第1引数: 区切り文字（カンマ、スペース、ハイフンなど）</li><li>第2引数: 空セルを無視するか（TRUE = 無視する）</li><li>第3引数: 結合するセル範囲</li></ul>



<p class="wp-block-paragraph">空セルを無視してくれるのが大きなポイントです。たとえばA1~D1のうちC1が空白でも、余計な区切り文字が入りません。</p>



<p class="wp-block-paragraph">A1=東京, B1=大阪, C1=(空白), D1=福岡 の場合で比べてみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th></tr></thead><tbody><tr><td><code>=TEXTJOIN(",",TRUE,A1:D1)</code></td><td>東京,大阪,福岡</td></tr><tr><td><code>=TEXTJOIN(",",FALSE,A1:D1)</code></td><td>東京,大阪,,福岡</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">TRUEにすると空セルのC1が飛ばされ、余計なカンマが入りません。</p>



<h3 class="wp-block-heading"><span id="toc12">結合関数の選び方</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>&#038;</th><th><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT</a></th><th><a href="https://mashukabu.com/excel-function-howto-use-concatenate/">CONCATENATE</a></th><th><a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN</a></th></tr></thead><tbody><tr><td>範囲指定</td><td>不可</td><td>可能</td><td>不可</td><td>可能</td></tr><tr><td>区切り文字</td><td>手動で挿入</td><td>なし</td><td>なし</td><td>自動挿入</td></tr><tr><td>空セル無視</td><td>不可</td><td>不可</td><td>不可</td><td>可能</td></tr><tr><td>対応バージョン</td><td>全バージョン</td><td>Excel 2019以降</td><td>全バージョン</td><td>Excel 2019以降</td></tr><tr><td>おすすめ度</td><td>2~3個の結合</td><td>範囲一括</td><td>旧環境向け</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>CONCATENATEは互換性のために残されている旧関数です。新しい環境ではCONCAT関数を使ってください。詳しくは「<a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT関数の使い方</a>」で解説しています。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc13">文字列を「分割」する関数の使い方</span></h2>



<p class="wp-block-paragraph">1つのセルに入っている文字列を複数のセルに分けたい場面は多いです。TEXTSPLIT関数やLEFT+FIND関数の組み合わせで対応できます。</p>



<h3 class="wp-block-heading"><span id="toc14">TEXTSPLIT関数でカンマ区切りデータを列に分ける</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT関数</a>はM365で追加された強力な関数です。</p>



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



<p class="wp-block-paragraph">カンマ区切りの「東京,大阪,名古屋,福岡」を入力すると、4つのセルに自動で分割されます。スピル機能で横方向に展開されるので、数式は1つだけでOKです。</p>



<p class="wp-block-paragraph">行方向に分割したい場合は、第3引数を使います。</p>



<p class="wp-block-paragraph"><strong>第3引数に区切り文字を指定すると行方向に分割されます。</strong></p>



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



<p class="wp-block-paragraph">複数の区切り文字を同時に指定することも可能です。カンマとセミコロンの両方で分割する場合はこう書きます。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(A1,{&quot;,&quot;,&quot;;&quot;})</code></pre>



<h3 class="wp-block-heading"><span id="toc15">TEXTSPLIT が使えない環境での分割テクニック</span></h3>



<p class="wp-block-paragraph">Excel 2021以前ではTEXTSPLIT関数が使えません。その場合はLEFT+FIND+MID+LENを組み合わせます。</p>



<p class="wp-block-paragraph"><strong>1つ目の要素（カンマの前）を取り出す場合:</strong></p>



<pre class="wp-block-code"><code>=LEFT(A1,FIND(&quot;,&quot;,A1)-1)</code></pre>



<p class="wp-block-paragraph"><strong>2つ目の要素（1つ目のカンマ～2つ目のカンマの間）を取り出す場合:</strong></p>



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



<p class="wp-block-paragraph">ちょっと複雑に見えますが、やっていることはシンプルです。</p>



<ol class="wp-block-list"><li>1つ目のカンマの位置を調べる</li><li>2つ目のカンマの位置を調べる（FINDの第3引数で開始位置を指定）</li><li>2つの位置の間の文字列をMIDで取り出す</li></ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>要素数が多い場合は数式が非常に複雑になります。M365環境であればTEXTSPLIT関数の利用を強くおすすめします。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc16">「区切り位置」機能との比較</span></h3>



<p class="wp-block-paragraph">Excelには関数以外にも「区切り位置」というメニュー機能があります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>TEXTSPLIT関数</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>手動で再実行が必要</td></tr><tr><td>対応バージョン</td><td>Microsoft 365</td><td>全バージョン</td></tr><tr><td>大量データ</td><td>数式1つで対応可</td><td>毎回手動操作</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">元データを残しつつ自動更新したい場合はTEXTSPLIT関数が圧倒的に便利です。一度きりの変換なら区切り位置機能でも十分対応できます。</p>



<h2 class="wp-block-heading"><span id="toc17">文字列を「置換・整形」する関数の使い方</span></h2>



<p class="wp-block-paragraph">文字列を別の文字列に置き換えたり、余分なスペースを取り除く場面で活躍します。SUBSTITUTE・REPLACE・TRIM関数が代表的です。</p>



<h3 class="wp-block-heading"><span id="toc18">SUBSTITUTE関数で特定の文字列を置き換える</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>は「この文字列をこの文字列に変える」という置換に使います。</p>



<p class="wp-block-paragraph"><strong>住所から「東京都」を除く場合:</strong></p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A1,&quot;東京都&quot;,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph"><strong>電話番号のハイフンを除去する場合:</strong></p>



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



<p class="wp-block-paragraph">第4引数を指定すると、何番目の出現だけを置換できます。</p>



<p class="wp-block-paragraph"><strong>1番目のハイフンだけをスラッシュに変換する場合:</strong></p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A1,&quot;-&quot;,&quot;/&quot;,1)</code></pre>



<h3 class="wp-block-heading"><span id="toc19">REPLACE関数で位置を指定して置き換える</span></h3>



<p class="wp-block-paragraph">REPLACE関数は「何文字目から何文字」を指定して置き換えます。</p>



<p class="wp-block-paragraph"><strong>1文字目から3文字を「ABC」に置換する場合:</strong></p>



<pre class="wp-block-code"><code>=REPLACE(A1,1,3,&quot;ABC&quot;)</code></pre>



<p class="wp-block-paragraph">SUBSTITUTEとREPLACEの使い分けはこちらです。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE</a></th><th>REPLACE</th></tr></thead><tbody><tr><td>指定方法</td><td>置き換える文字列</td><td>位置と文字数</td></tr><tr><td>用途</td><td>「この文字を消したい」</td><td>「何文字目を変えたい」</td></tr><tr><td>全出現の置換</td><td>可能（第4引数で制御）</td><td>1箇所のみ</td></tr><tr><td>文字列が不明な場合</td><td>使えない</td><td>位置さえわかればOK</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">実務では「ハイフンを消す」「都道府県を除く」のようにSUBSTITUTE関数を使う場面が多いです。</p>



<h3 class="wp-block-heading"><span id="toc20">TRIM関数でスペースを整える</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>は文字列の前後のスペースを除去し、単語間のスペースを1つに統一します。</p>



<pre class="wp-block-code"><code>=TRIM(A1)</code></pre>



<p class="wp-block-paragraph">たとえば「  山田  太郎  」が「山田 太郎」になります。データのコピー&#038;ペーストで余分なスペースが入ってしまったときに重宝します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>TRIM関数は半角スペースのみ対応です。全角スペースを除去したい場合は <code>=SUBSTITUTE(A1,"　","")</code> で全角スペースを空文字に置換してからTRIMを適用してください。詳しくは「<a href="https://mashukabu.com/about-nbsp/">ノーブレークスペースの対処法</a>」も参考になります。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc21">大文字・小文字・全角・半角の変換</span></h3>



<p class="wp-block-paragraph">文字の変換系関数をまとめて紹介します。</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/excel-function-howto-use-upper/">UPPER</a></td><td>全部大文字</td><td><code>=UPPER("abc")</code></td><td>ABC</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-lower/">LOWER</a></td><td>全部小文字</td><td><code>=LOWER("ABC")</code></td><td>abc</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-proper/">PROPER</a></td><td>先頭だけ大文字</td><td><code>=PROPER("john smith")</code></td><td>John Smith</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-asc/">ASC</a></td><td>全角→半角</td><td><code>=ASC("ＡＢＣ")</code></td><td>ABC</td></tr><tr><td>JIS</td><td>半角→全角</td><td><code>=JIS("ABC")</code></td><td>ABC</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">商品コードや顧客名の表記を統一するときに使います。<a href="https://mashukabu.com/excel-function-howto-use-exact/">EXACT関数</a>で大文字小文字の一致を確認してから変換するのも効果的です。</p>



<h2 class="wp-block-heading"><span id="toc22">新旧関数の対比表で文字列関数を整理</span></h2>



<p class="wp-block-paragraph">ここまで紹介した関数の中には、新旧の関係にあるものがあります。環境に合わせて選んでください。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>旧関数・旧手法</th><th>新関数（M365）</th><th>新関数のメリット</th></tr></thead><tbody><tr><td>文字列の結合</td><td><a href="https://mashukabu.com/excel-function-howto-use-concatenate/">CONCATENATE</a></td><td><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT</a></td><td>セル範囲を指定可能</td></tr><tr><td>区切り文字付き結合</td><td>&#038;で手動挿入</td><td><a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN</a></td><td>空セル無視が可能</td></tr><tr><td>区切り文字で分割</td><td>区切り位置（メニュー）</td><td><a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT</a></td><td>数式で自動更新</td></tr><tr><td>区切り文字の前を取得</td><td>LEFT + FIND</td><td><a href="https://mashukabu.com/excel-function-howto-use-textbefore/">TEXTBEFORE</a></td><td>数式がシンプル</td></tr><tr><td>区切り文字の後を取得</td><td>RIGHT + LEN + FIND</td><td><a href="https://mashukabu.com/excel-function-howto-use-textafter/">TEXTAFTER</a></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>=TEXTSPLIT("a,b",",")</code> と入力して試してみてください。<code>#NAME?</code> エラーが出たらお使いのExcelでは未対応です。</p></blockquote>



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



<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><code>#VALUE!</code></td><td>FIND/SEARCHで検索文字が見つからない</td><td><a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数</a>やISERRORで「見つからない場合」の処理を追加する</td></tr><tr><td><code>#NAME?</code></td><td>関数名のスペルミス、または未対応バージョン</td><td>関数名を確認する。TEXTSPLIT等はM365専用</td></tr><tr><td>意図しない結合結果</td><td>数値がそのまま結合されて桁が変わる</td><td><a href="https://mashukabu.com/excel-function-howto-use-text/">TEXT関数</a>で書式指定してから結合する</td></tr><tr><td>スペースが残る</td><td>全角スペースがTRIMで除去できない</td><td><code>=SUBSTITUTE(A1,"　","")</code> で全角スペースを先に除去</td></tr><tr><td>分割結果がずれる</td><td>区切り文字が想定と違う（全角カンマなど）</td><td><a href="https://mashukabu.com/excel-function-howto-use-len/">LEN関数</a>で文字数を確認し、区切り文字を特定する</td></tr></tbody></table></figure>



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



<p class="wp-block-paragraph">Excelの文字列関数を4つのカテゴリで整理しました。</p>



<figure class="wp-block-table"><table><thead><tr><th>カテゴリ</th><th>主な関数</th><th>代表的な使い方</th></tr></thead><tbody><tr><td>抽出</td><td>LEFT, RIGHT, <a href="https://mashukabu.com/excel-function-howto-use-mid/">MID</a>, FIND</td><td>氏名から姓・名を取り出す</td></tr><tr><td>結合</td><td><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT</a>, <a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN</a>, &#038;</td><td>名前と部署を結合する</td></tr><tr><td>分割</td><td><a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT</a>, LEFT+FIND</td><td>カンマ区切りデータを列に分ける</td></tr><tr><td>置換・整形</td><td><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE</a>, <a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM</a></td><td>住所から都道府県を除く</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">迷ったら冒頭の逆引きインデックスに戻ってみてください。「やりたいこと」から関数を選ぶのが一番確実です。</p>



<p class="wp-block-paragraph">M365環境であれば、TEXTSPLIT・TEXTBEFORE・TEXTAFTERといった新関数もぜひ試してみてください。数式がぐっとシンプルになりますよ。</p>



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



<h4 class="wp-block-heading">抽出系</h4>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-mid/">MID関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-midb/">MIDB関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-len/">LEN関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-textbefore/">TEXTBEFORE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-textafter/">TEXTAFTER関数の使い方</a></li></ul>



<h4 class="wp-block-heading">結合系</h4>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-concatenate/">CONCATENATE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN関数の使い方</a></li></ul>



<h4 class="wp-block-heading">分割系</h4>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT関数の使い方</a></li></ul>



<h4 class="wp-block-heading">置換・整形系</h4>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-text/">TEXT関数の使い方</a></li></ul>



<h4 class="wp-block-heading">変換系</h4>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-upper/">UPPER関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-lower/">LOWER関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-proper/">PROPER関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-asc/">ASC関数の使い方</a></li></ul>



<h4 class="wp-block-heading">その他</h4>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-exact/">EXACT関数の使い方</a></li><li><a href="https://mashukabu.com/about-nbsp/">ノーブレークスペースの対処法</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-rept/">REPT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-string-functions-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのSUBSTITUTE関数の使い方｜文字列を置き換える方法</title>
		<link>https://mashukabu.com/excel-function-howto-use-substitute/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-substitute/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 02 May 2022 03:02:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[データ整形]]></category>
		<category><![CDATA[テキスト操作]]></category>
		<category><![CDATA[文字列置換]]></category>
		<category><![CDATA[関数比較]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=1825</guid>

					<description><![CDATA[ExcelのSUBSTITUTE関数で特定の文字列を別の文字列に置き換える方法を解説。ハイフン除去・改行削除・複数文字の一括置換など実務例を紹介し、REPLACE関数との違いも比較表で整理しています。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">セルの中に混ざったハイフンやスペースを一括で取り除きたい。そんなとき、手作業で一つずつ修正するのは大変ですよね。SUBSTITUTE関数を使えば、指定した文字列を別の文字列にまとめて置き換えられます。この記事では基本の書き方から実務で使える置換パターンまで、まとめて紹介します。</p>



<p class="wp-block-paragraph">この記事は次のような人におすすめ</p>



<ul class="wp-block-list"><li>セルの中の特定の文字を別の文字に一括で置き換えたい</li><li>電話番号のハイフンや余分なスペースをまとめて除去したい</li><li>SUBSTITUTE関数とREPLACE関数の違いが知りたい</li></ul>




  <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">SUBSTITUTE関数とは？</a></li><li><a href="#toc2" tabindex="0">SUBSTITUTE関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">SUBSTITUTE関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">セル参照で文字列を置換する</a></li><li><a href="#toc7" tabindex="0">文字列を削除する（空文字で置換）</a></li><li><a href="#toc8" tabindex="0">第4引数で特定の位置だけ置換する</a></li></ol></li><li><a href="#toc9" tabindex="0">SUBSTITUTE関数の実務活用パターン</a><ol><li><a href="#toc10" tabindex="0">ハイフン・スペースの除去（データ整形）</a></li><li><a href="#toc11" tabindex="0">改行の削除（CHAR関数との組み合わせ）</a></li><li><a href="#toc12" tabindex="0">SUBSTITUTE関数のネスト（複数文字の一括置換）</a></li><li><a href="#toc13" tabindex="0">特定の文字を別の文字に変換する</a></li></ol></li><li><a href="#toc14" tabindex="0">SUBSTITUTE関数とREPLACE関数の違い</a></li><li><a href="#toc15" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc16" tabindex="0">まとめ</a><ol><li><a href="#toc17" tabindex="0">関連記事</a></li><li><a href="#toc18" tabindex="0">関数一覧</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">SUBSTITUTE（サブスティチュート）関数は、文字列の中から指定した文字を検索し、別の文字に置き換える関数です。英語の「substitute」は「代わりに置く」という意味で、まさに文字列の差し替え専用の関数です。</p>



<p class="wp-block-paragraph">たとえば「Excel」という文字を「エクセル」に置き換えたり、電話番号の「-」を消して数字だけにしたりできます。Excelの「検索と置換」機能（Ctrl+H）と似ていますが、SUBSTITUTE関数は数式なので元のデータを変更しません。別のセルに結果を出力するので安心です。</p>



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



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



<pre class="wp-block-code"><code>=SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換対象])</code></pre>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</span></h3>



<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>置き換え後の文字列（&#8221;&#8221;を指定すると削除になる）</td></tr><tr><td>置換対象</td><td>省略可</td><td>何番目に見つかった検索文字列だけを置換するか指定（省略するとすべて置換）</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>第4引数の「置換対象」は省略するケースがほとんどです。特定の出現箇所だけを変えたいときに数値で指定します。たとえば「2」を指定すると、2番目に見つかった文字列だけが置き換わります。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc6">セル参照で文字列を置換する</span></h3>



<p class="wp-block-paragraph">セルA1に「Excelは事務職に必須のツールです」と入っている場合に、「Excel」を「エクセル」に置き換えてみます。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A1,&quot;Excel&quot;,&quot;エクセル&quot;)</code></pre>



<p class="wp-block-paragraph">結果は「エクセルは事務職に必須のツールです」になります。元のセルA1の値はそのまま残るので安心です。</p>



<h3 class="wp-block-heading"><span id="toc7">文字列を削除する（空文字で置換）</span></h3>



<p class="wp-block-paragraph">置換文字列に「&#8221;&#8221;」（空文字）を指定すると、該当する文字を削除できます。</p>



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



<p class="wp-block-paragraph">A1が「03-1234-5678」なら、結果は「0312345678」です。ハイフンをすべて消せるので、電話番号の整形によく使われます。</p>



<h3 class="wp-block-heading"><span id="toc8">第4引数で特定の位置だけ置換する</span></h3>



<p class="wp-block-paragraph">同じ文字列が複数回登場する場合に、指定した順番の文字だけを置き換えられます。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(&quot;りんご・みかん・りんご&quot;,&quot;りんご&quot;,&quot;バナナ&quot;,2)</code></pre>



<p class="wp-block-paragraph">結果は「りんご・みかん・バナナ」です。2番目の「りんご」だけが「バナナ」に変わります。第4引数を省略するとすべての「りんご」が置換されます。</p>



<h2 class="wp-block-heading"><span id="toc9">SUBSTITUTE関数の実務活用パターン</span></h2>



<h3 class="wp-block-heading"><span id="toc10">ハイフン・スペースの除去（データ整形）</span></h3>



<p class="wp-block-paragraph">CSVや外部システムから取り込んだデータには、余分なハイフンやスペースが混ざりがちです。SUBSTITUTE関数で一括除去できます。</p>



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



<p class="wp-block-paragraph">郵便番号の「123-4567」を「1234567」にしたり、電話番号のハイフンを消したりする場面で使えます。半角スペースを除去したい場合は次のように書きます。</p>



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



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>前後の空白だけ削除したい場合は<a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>が便利です。SUBSTITUTE関数は文字列内の全スペースを消す点が異なります。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc11">改行の削除（CHAR関数との組み合わせ）</span></h3>



<p class="wp-block-paragraph">セル内改行は目に見えない文字（文字コード10）なので、直接入力できません。CHAR関数と組み合わせて削除します。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A1,CHAR(10),&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">Alt+Enterで入力したセル内改行がすべて消えます。改行以外の印刷できない文字も消したい場合は、<a href="https://mashukabu.com/excel-function-howto-use-clean/">CLEAN関数</a>と併用するのがおすすめです。</p>



<pre class="wp-block-code"><code>=CLEAN(SUBSTITUTE(A1,CHAR(10),&quot; &quot;))</code></pre>



<p class="wp-block-paragraph">改行を半角スペースに置き換えたうえで、残りの制御文字もCLEAN関数で除去するパターンです。</p>



<h3 class="wp-block-heading"><span id="toc12">SUBSTITUTE関数のネスト（複数文字の一括置換）</span></h3>



<p class="wp-block-paragraph">SUBSTITUTE関数を入れ子にすると、複数の文字をまとめて置換できます。</p>



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



<p class="wp-block-paragraph">この数式は、ハイフン → 半角スペース → 全角スペースの順番に3つの文字を一括で削除します。入れ子が深くなると読みにくくなりますが、やっていることはシンプルです。外側のSUBSTITUTEから順に「前の結果を次のSUBSTITUTEに渡す」だけです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>全角・半角の変換には<a href="https://mashukabu.com/excel-function-howto-use-asc/">ASC関数</a>が使えます。SUBSTITUTEで個別に全角・半角を消すより効率的な場合があります。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc13">特定の文字を別の文字に変換する</span></h3>



<p class="wp-block-paragraph">表記ゆれを統一する場面でも活躍します。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A1,&quot;株式会社&quot;,&quot;(株)&quot;)</code></pre>



<p class="wp-block-paragraph">住所録や取引先リストで「株式会社」を「(株)」に統一したいときにまとめて変換できます。</p>



<h2 class="wp-block-heading"><span id="toc14">SUBSTITUTE関数とREPLACE関数の違い</span></h2>



<p class="wp-block-paragraph">文字列を置き換える関数にはREPLACE関数もあります。名前が似ているので混同しやすいですが、使い分けのポイントは「置き換える対象の指定方法」です。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>SUBSTITUTE関数</th><th>REPLACE関数</th></tr></thead><tbody><tr><td>置換対象の指定</td><td><strong>文字列</strong>で指定</td><td><strong>位置（何文字目）</strong>で指定</td></tr><tr><td>構文</td><td>=SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換対象])</td><td>=REPLACE(文字列, 開始位置, 文字数, 置換文字列)</td></tr><tr><td>得意な場面</td><td>特定の文字を探して置き換える</td><td>決まった位置の文字を置き換える</td></tr><tr><td>使用例</td><td>ハイフン除去・表記統一</td><td>先頭3文字を伏字にする・電話番号の市外局番だけ変更</td></tr><tr><td>大文字・小文字</td><td>区別する</td><td>関係なし（位置で指定するため）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「この文字を消したい・変えたい」ならSUBSTITUTE関数です。「何文字目から何文字を変えたい」ならREPLACE関数と覚えておくとスムーズです。</p>



<p class="wp-block-paragraph">なお、文字列の位置を取得する関数としては<a href="https://mashukabu.com/excel-function-howto-use-len/">LEN関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-mid/">MID関数</a>も便利です。</p>



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



<p class="wp-block-paragraph">SUBSTITUTE関数はエラーが出にくい関数ですが、意図した結果にならないケースがあります。</p>



<figure class="wp-block-table"><table><thead><tr><th>症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>置換されない</td><td>大文字・小文字が一致していない</td><td>SUBSTITUTE関数は大文字と小文字を区別します。「excel」と「Excel」は別の文字列として扱われるため、正確に入力してください</td></tr><tr><td>置換されない</td><td>見えない文字（空白・改行）が含まれている</td><td><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-clean/">CLEAN関数</a>で不要な文字を除去してから置換してください</td></tr><tr><td>全角・半角の不一致で置換されない</td><td>検索文字列と実際の文字の全角半角が異なる</td><td><a href="https://mashukabu.com/excel-function-howto-use-asc/">ASC関数</a>で半角に統一してからSUBSTITUTE関数を適用すると確実です</td></tr><tr><td>#VALUE!エラー</td><td>引数が不足している</td><td>第1〜第3引数はすべて必須です。省略するとエラーになります</td></tr><tr><td>意図しない箇所も置換される</td><td>検索文字列が部分一致する</td><td>「市」を置換すると「市区町村」の「市」も変わります。検索文字列をより具体的に指定してください</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>SUBSTITUTE関数の大文字・小文字の区別は、英字だけでなく全角英字にも適用されます。「Ａ」と「ａ」も別の文字として扱われるので注意してください。</p></blockquote>



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



<p class="wp-block-paragraph">SUBSTITUTE関数は「セルの中の特定の文字を別の文字に置き換える」ための関数です。</p>



<ul class="wp-block-list"><li>第3引数に「&#8221;&#8221;」を指定すると、文字の削除として使える</li><li>第4引数で「n番目だけ置換」が可能</li><li>ネスト（入れ子）にすれば複数の文字を一括置換できる</li><li>REPLACE関数との違いは「文字で探すか、位置で探すか」</li></ul>



<p class="wp-block-paragraph">ハイフン除去・改行削除・表記統一など、実務のデータ整形で幅広く使える関数です。ぜひ活用してみてください。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-clean/">CLEAN関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-asc/">ASC関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-len/">LEN関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-mid/">MID関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-concatenate/">CONCATENATE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-value/">VALUE関数の使い方</a></li></ul>



<h3 class="wp-block-heading"><span id="toc18">関数一覧</span></h3>



<p class="wp-block-paragraph">Excel関数の一覧は下記の記事で確認できます。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-list-by-function/">Excel関数 機能別一覧</a></li></ul>



<p class="wp-block-paragraph">エラー値が表示される場合は、下記の記事も参考にしてみてください。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-error-value-list/">Excelのエラー値一覧</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-substitute/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
