<?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>SUBSTITUTE関数 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/substitute%e9%96%a2%e6%95%b0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 23 Apr 2026 11:31:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>SUBSTITUTE関数 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのASC関数の使い方｜全角→半角変換と4つの実務パターン</title>
		<link>https://mashukabu.com/spreadsheet-asc-function/</link>
					<comments>https://mashukabu.com/spreadsheet-asc-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:38:21 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[ASC関数]]></category>
		<category><![CDATA[JIS関数]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[TRIM関数]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[全角半角変換]]></category>
		<category><![CDATA[文字列変換]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4911</guid>

					<description><![CDATA[スプレッドシートのASC関数の使い方を基礎から解説。全角を半角に変換する基本、電話番号・カタカナの統一パターン、JIS関数との逆関数関係、TRIM・CLEAN・SUBSTITUTEとの組み合わせまで。変換対象一覧表とエラー対処つき。]]></description>
										<content:encoded><![CDATA[
<p>スプレッドシートで顧客リストや商品マスタを扱っていると、「電話番号やカタカナが全角と半角でバラバラで集計が合わない…」という場面、ありませんか?</p>



<p>VLOOKUPやSUMIFSで集計しようとすると、全角「０３」と半角「03」は別物として扱われます。見た目はほとんど同じなのに、検索してもヒットしない。手作業で直そうとしても、件数が多いと現実的ではありませんよね。</p>



<p>そんなときに使えるのが <strong>ASC関数</strong> です。この記事では、スプレッドシートのASC関数の基本から、JIS関数との使い分け、実務で役立つ4つの活用パターンまでを紹介します。よくあるエラーの対処も一通り押さえていきますよ。</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">スプレッドシートのASC関数とは？できることを30秒で理解</a><ol><li><a href="#toc2" tabindex="0">読み方と語源</a></li><li><a href="#toc3" tabindex="0">なぜASC関数が必要なのか</a></li></ol></li><li><a href="#toc4" tabindex="0">ASC関数の基本構文と使い方</a><ol><li><a href="#toc5" tabindex="0">書き方と引数の説明</a></li><li><a href="#toc6" tabindex="0">セルに入力した文字列から全角を半角に変換する</a></li><li><a href="#toc7" tabindex="0">カタカナや記号を半角に変換する</a></li><li><a href="#toc8" tabindex="0">ASC関数で変換される文字・されない文字</a></li></ol></li><li><a href="#toc9" tabindex="0">JIS関数との違い・使い分け（逆関数関係）</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></ol></li><li><a href="#toc13" tabindex="0">実務で使える4つのユースケース</a><ol><li><a href="#toc14" tabindex="0">ユースケース1: 電話番号の全角半角を統一して集計可能にする</a></li><li><a href="#toc15" tabindex="0">ユースケース2: CSVインポート後のデータをまとめてクレンジングする</a></li><li><a href="#toc16" tabindex="0">ユースケース3: VLOOKUP・SUMIFSの不一致を解消する</a></li><li><a href="#toc17" tabindex="0">ユースケース4: フォーム入力のゆらぎを吸収する</a></li></ol></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><li><a href="#toc21" tabindex="0">値として確定させたいとき</a></li></ol></li><li><a href="#toc22" tabindex="0">まとめ：ASC関数はデータクレンジングの第一歩</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのASC関数とは？できることを30秒で理解</span></h2>



<p>ASC関数は、スプレッドシートで <strong>全角文字を半角文字に変換する</strong> 関数です。</p>



<p>たとえば全角の「Ｅｘｃｅｌ」を渡すと「Excel」が返ります。英数字・カタカナ・記号・全角スペースがまとめて半角に変わるので、データの表記ゆれをそろえたい場面でとても便利ですよ。</p>



<p>反対に「半角を全角に戻す」関数が<a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数</a>で、この2つは逆関数の関係になっています。セットで覚えておくと日本語データの整形作業がぐっと楽になりますね。</p>



<h3 class="wp-block-heading"><span id="toc2">読み方と語源</span></h3>



<p>ASC関数の読み方は「アスキー」です。文字コード規格「ASCII（American Standard Code for Information Interchange）」に由来する名前ですよ。ASCIIは半角英数字の文字コード体系なので、「ASC＝半角にする」と覚えておけば用途も直感的ですね。</p>



<h3 class="wp-block-heading"><span id="toc3">なぜASC関数が必要なのか</span></h3>



<p>「全角と半角の違いなんて、見た目ではわかりにくい程度で実害はないのでは？」と思うかもしれません。でも、データとしてはまったくの別物として扱われます。</p>



<p>たとえば顧客の電話番号で、あるレコードは全角「０３-１２３４-５６７８」、別のレコードは半角「03-1234-5678」だったとします。VLOOKUPでこの2つを検索しても、部分一致すらしません。SUMIFSの条件指定でも同じ現象が起きて、集計結果が実態とかけ離れます。</p>



<p>手作業で1件ずつ直すのは現実的ではないので、ASC関数で一気に半角へそろえるのが定石になっています。</p>



<h2 class="wp-block-heading"><span id="toc4">ASC関数の基本構文と使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc5">書き方と引数の説明</span></h3>



<p>ASC関数の構文はとてもシンプルです。</p>



<pre class="wp-block-code"><code>=ASC(文字列)</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></tbody></table></figure>



<p>引数は1つだけ。セル参照を渡すのが基本的な使い方です。</p>



<h3 class="wp-block-heading"><span id="toc6">セルに入力した文字列から全角を半角に変換する</span></h3>



<p>もっとも基本的な使い方です。A1に「Ｅｘｃｅｌ」と全角で入力されている場合、次の数式で「Excel」が返ります。</p>



<pre class="wp-block-code"><code>=ASC(A1)
→ 「Excel」</code></pre>



<p>数字も同じように変換されます。</p>



<pre class="wp-block-code"><code>=ASC(&quot;１２３４５&quot;)
→ 「12345」</code></pre>



<p>文字列を直接指定することもできますが、実務ではセル参照で列全体に適用するのが一般的ですよ。</p>



<h3 class="wp-block-heading"><span id="toc7">カタカナや記号を半角に変換する</span></h3>



<p>英数字以外もまとめて半角になります。</p>



<pre class="wp-block-code"><code>=ASC(&quot;カタカナ＠＃＄&quot;)
→ 「ｶﾀｶﾅ@#$」</code></pre>



<p>全角のカタカナ・記号・全角スペースが一括で半角になりました。CSVインポート直後のクレンジングで、この挙動が役に立ちます。</p>



<h3 class="wp-block-heading"><span id="toc8">ASC関数で変換される文字・されない文字</span></h3>



<p>どの文字がASC関数で変換対象か、一覧表でまとめておきます。</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>A〜Z, a〜z</td><td>される</td></tr><tr><td>数字</td><td>０〜９</td><td>0〜9</td><td>される</td></tr><tr><td>カタカナ</td><td>ア〜ン</td><td>ｱ〜ﾝ</td><td>される</td></tr><tr><td>濁点・半濁点つきカタカナ</td><td>ガ, パ など</td><td>ｶﾞ, ﾊﾟ など</td><td>される（2文字に分解される）</td></tr><tr><td>記号</td><td>＠, ＃, ＄, −（全角ハイフン）など</td><td>@, #, $, &#8211; など</td><td>される</td></tr><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>—</td><td>されない</td></tr></tbody></table></figure>



<p>ひらがなと漢字には半角文字が存在しないため、変換されずそのまま残ります。「カタカナは全角のまま残したい」という場合、ASC関数のあとで後処理が必要ですよ。具体的には、カタカナ部分だけ<a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数</a>で戻す処理を入れます。</p>



<p>濁点つきカタカナが <strong>2文字に分解される</strong> 点も、見落としがちな挙動です。LEN関数などで文字数をカウントしている処理がある場合は、結果がズレないか確認しておいてくださいね。</p>



<h2 class="wp-block-heading"><span id="toc9">JIS関数との違い・使い分け（逆関数関係）</span></h2>



<p>ASC関数と<a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数</a>は「半角↔全角」の逆の関係にあります。セットで押さえておくと、データ整形の引き出しがぐっと増えますよ。</p>



<h3 class="wp-block-heading"><span id="toc10">比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>ASC</th><th>JIS</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>JIS</td><td>ASC</td></tr><tr><td>引数</td><td>文字列（1つのみ）</td><td>文字列（1つのみ）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc11">逆変換の確認</span></h3>



<p>ASC関数とJIS関数を連続で適用すると、元の文字列に戻ります。</p>



<pre class="wp-block-code"><code>=JIS(ASC(&quot;Ｅｘｃｅｌ&quot;))
→ 「Ｅｘｃｅｌ」（元に戻る）</code></pre>



<p>つまり <code>JIS(ASC(文字列)) = 文字列</code> の関係が成り立ちます。逆に <code>ASC(JIS(文字列))</code> でも、もとが半角英数字の文字列なら同じ結果になります。</p>



<h3 class="wp-block-heading"><span id="toc12">どちらを使うべきか</span></h3>



<p>次の基準で選んでみてください。</p>



<ul class="wp-block-list"><li>データベースや集計に使うデータ → <strong>ASC</strong>（半角に統一）</li><li>印刷物や帳票で見やすく整えたい → <strong>JIS</strong>（全角に統一）</li><li>CSVインポート後のクレンジング → <strong>ASC</strong>（半角統一が基本）</li><li>郵便番号・電話番号の表示 → <strong>ASC</strong>（半角が慣例）</li></ul>



<p>実務ではASC関数を使う場面のほうが圧倒的に多いです。集計や検索で使うデータは半角へ統一する、と覚えておけばまず迷いませんよ。</p>



<h2 class="wp-block-heading"><span id="toc13">実務で使える4つのユースケース</span></h2>



<h3 class="wp-block-heading"><span id="toc14">ユースケース1: 電話番号の全角半角を統一して集計可能にする</span></h3>



<p>顧客リストで電話番号の表記がバラバラというケースです。A列に電話番号が入っているとします。</p>



<pre class="wp-block-code"><code>=ASC(A2)
→ 「０３−１２３４−５６７８」→「03-1234-5678」</code></pre>



<p>全角のハイフンも半角に変換されるので、電話番号の書式がバラついたデータでも一発で統一できます。</p>



<p>VLOOKUPの検索キーや、顧客マスタとの突き合わせでこの処理を挟むと、ヒット率が一気に上がりますよ。CSVで受け取った外部データを社内DBと照合するときの、ほぼ必須の下処理と思って大丈夫です。</p>



<h3 class="wp-block-heading"><span id="toc15">ユースケース2: CSVインポート後のデータをまとめてクレンジングする</span></h3>



<p>データクレンジングでは複数の関数を組み合わせるのが定番です。全角半角の統一に加えて、余分なスペースや制御文字も除去しましょう。</p>



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



<p>この数式は2つのステップで動きます。</p>



<ol class="wp-block-list"><li>ASC関数が全角→半角に変換する</li><li><a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>（前後のスペースと連続スペースを整理する関数）が余分なスペースを除去する</li></ol>



<p>さらに改行やタブなどの制御文字も取り除きたいときは、<a href="https://mashukabu.com/spreadsheet-clean-function/">CLEAN関数</a>（印刷できない制御文字を除去する関数）を組み合わせます。</p>



<pre class="wp-block-code"><code>=TRIM(ASC(CLEAN(A2)))</code></pre>



<p>順番は <strong>内側から CLEAN → ASC → TRIM</strong> が定番です。制御文字を先に落とし、次に半角へ統一し、最後にスペースを整える。この順番を守ると、ほぼすべての表記ゆれが一掃できますよ。</p>



<p>特定の文字だけ置き換えたいときは<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>も追加します。たとえば全角スペースを完全に削除したい場合はこう書きます。</p>



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



<p>ASCで全角スペースが半角スペースに変わったあと、SUBSTITUTEで半角スペースを空文字に置換する流れですね。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>データクレンジングの定番フロー</strong></p><p>CLEAN（制御文字除去）→ ASC（半角統一）→ TRIM（スペース整理）の順に適用すると、大半の不要文字を一掃できます。VLOOKUPやSUMIFSの条件不一致もこれで解消しやすくなりますよ。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc16">ユースケース3: VLOOKUP・SUMIFSの不一致を解消する</span></h3>



<p>「検索値とデータが見た目は同じなのに、なぜかVLOOKUPがヒットしない」。これ、現場でよくある悩みですよね。</p>



<p>原因は全角半角の違いによる不一致です。検索側のデータは半角、マスタ側は全角、といった具合に片側だけ全角になっているパターンがほとんどです。</p>



<p>対処法は <strong>両方のセルにASC関数を適用する</strong> ことです。</p>



<pre class="wp-block-code"><code>=VLOOKUP(ASC(A2), ASC(マスタ範囲), 2, FALSE)</code></pre>



<p>ただしこの書き方は、マスタ範囲を<a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA</a>でラップしないと動かないことがあります。より確実なのは、マスタ側に事前にASCをかけた補助列を用意しておくことです。</p>



<pre class="wp-block-code"><code>マスタ側に補助列を作る:
=ASC(B2)  （B列が元の検索キー）

検索側:
=VLOOKUP(ASC(A2), マスタの補助列, 2, FALSE)</code></pre>



<p>SUMIFSの条件指定でも同じ考え方で、条件値と条件範囲の両方にASCを適用します。この「両側に適用」を忘れると、片側だけ半角になって結局ヒットしないので要注意ですよ。</p>



<h3 class="wp-block-heading"><span id="toc17">ユースケース4: フォーム入力のゆらぎを吸収する</span></h3>



<p>Googleフォームやお問い合わせフォームで収集したデータは、入力者によって全角半角が混在します。氏名の姓名のあいだに全角スペース、半角スペース、スペースなし、とバラバラになりがちです。</p>



<p>そんなときは、ASCとTRIMとSUBSTITUTEの合わせ技で統一します。</p>



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



<p>この数式の動きはこうです。</p>



<ol class="wp-block-list"><li>ASC関数で全角スペースを半角スペースに統一</li><li>SUBSTITUTEで連続スペースを1つの半角スペースに正規化（※ 連続スペースがあれば繰り返し置換が必要）</li><li>TRIMで前後のスペースを除去</li></ol>



<p>「姓・名」を後で分割したい場合も、まずスペース表記をそろえてから<a href="https://mashukabu.com/spreadsheet-split-function/">SPLIT関数</a>に渡すと失敗しません。入力ゆらぎに対して強いシートを作れますよ。</p>



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



<p>ASC関数で発生しやすいトラブルをまとめておきます。</p>



<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>ASC関数はカタカナも半角にする</td><td>JIS関数でカタカナだけ全角に戻す</td></tr><tr><td>VLOOKUPが不一致のまま</td><td>検索側とマスタ側の両方に適用していない</td><td>両方のセルにASC関数を適用する</td></tr><tr><td>数値のまま計算に使いたい</td><td>ASC関数の返り値は文字列</td><td><a href="https://mashukabu.com/spreadsheet-value-function/">VALUE関数</a>で数値に変換する</td></tr><tr><td>濁音つきカタカナが2文字扱い</td><td>濁点・半濁点が分離される仕様</td><td>LEN関数の結果を使っている処理は要チェック</td></tr><tr><td>#VALUE!エラーが出る</td><td>引数に無効な参照（エラー値）が入っている</td><td>参照先にエラーがないか確認</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc19">カタカナだけ全角に戻したい場合の対処</span></h3>



<p>ASC関数をかけると英数字も記号もカタカナもまとめて半角になります。でも「英数字だけ半角にしたい、カタカナは全角で残したい」というケースは意外と多いです。</p>



<p>この場合、「一度ASCをかけてからJIS関数で戻す」のはうまくいきません。カタカナ以外の英数字や記号まで全角に戻ってしまうからです。現実的な対処は2つあります。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-regexreplace-function/">REGEXREPLACE関数</a>で英数字だけを半角に置換する</li><li>正規表現で英数字を検出してから部分的にASCを適用する</li></ul>



<p>本格的に正規表現を使うなら、REGEXREPLACE関数のほうがコントロールしやすいですよ。</p>



<h3 class="wp-block-heading"><span id="toc20">数値として使いたいときの対処</span></h3>



<p>ASC関数の返り値はあくまで文字列です。全角数字「１２３」を半角「123」に変換しても、セルの中身は「数値123」ではなく「文字列&#8221;123&#8243;」のままです。</p>



<p>このまま SUM や AVERAGE で集計するとエラーになったり、意図せず無視されたりします。数値として扱いたい場合はVALUE関数で明示的に変換してください。</p>



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



<p>これで計算や集計に使える数値として扱えるようになります。</p>



<h3 class="wp-block-heading"><span id="toc21">値として確定させたいとき</span></h3>



<p>数式で変換したあと、もとのセルに「半角化した結果」として貼り直したい場面があります。そのときは数式の結果をコピーして、同じ範囲に <strong>「値のみ貼り付け」</strong> で上書きしましょう。</p>



<p>メニューから「編集」→「特殊貼り付け」→「値のみ貼り付け」（ショートカット: Cmd/Ctrl + Shift + V）です。これで数式が消えてデータだけが残るので、ほかのシステムにエクスポートするときも安心ですよ。</p>



<h2 class="wp-block-heading"><span id="toc22">まとめ：ASC関数はデータクレンジングの第一歩</span></h2>



<p>スプレッドシートのASC関数の要点を振り返ります。</p>



<ul class="wp-block-list"><li><strong>構文</strong>: <code>=ASC(文字列)</code> — 引数1つで全角を半角に変換</li><li><strong>変換対象</strong>: 英数字・カタカナ・記号・全角スペース（ひらがな・漢字は対象外）</li><li><strong>逆関数</strong>: <a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数</a>（半角→全角）</li><li><strong>実務での活用</strong>: 電話番号の統一・CSVクレンジング・VLOOKUP不一致の解消・フォーム入力のゆらぎ吸収</li><li><strong>組み合わせの王道</strong>: CLEAN → ASC → TRIM の3段構え</li><li><strong>注意点</strong>: 返り値は文字列なので、数値として使うときはVALUE関数を重ねる</li></ul>



<p>データの集計や検索で全角半角の不一致に悩んでいるなら、まずASC関数で半角に統一するところから始めてみてください。<a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>や<a href="https://mashukabu.com/spreadsheet-clean-function/">CLEAN関数</a>、<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>と組み合わせれば、データクレンジングの大半をこれ一式でカバーできますよ。</p>



<p>Excel版のASC関数や、関連する文字列操作関数については、こちらの記事もあわせてどうぞ。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-asc/">ExcelのASC関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数の使い方</a>（半角→全角変換）</li><li><a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数の使い方</a>（スペース整理）</li><li><a href="https://mashukabu.com/spreadsheet-clean-function/">CLEAN関数の使い方</a>（制御文字除去）</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-asc-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのCLEAN関数の使い方｜改行・制御文字を一括削除</title>
		<link>https://mashukabu.com/spreadsheet-clean-function/</link>
					<comments>https://mashukabu.com/spreadsheet-clean-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:37:12 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[CLEAN関数]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[TRIM関数]]></category>
		<category><![CDATA[制御文字削除]]></category>
		<category><![CDATA[改行削除]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4893</guid>

					<description><![CDATA[スプレッドシートのCLEAN関数は、改行やタブなどの印刷できない制御文字を一括削除する関数です。CSVインポートやWebコピペで混入する不要文字の除去方法を解説。TRIM・SUBSTITUTEとの組み合わせ技、CODE関数で文字コードを調べる診断法も紹介します。]]></description>
										<content:encoded><![CDATA[
<p>CSVをインポートしたら、セルの中に謎の改行が入っていた。Webページからコピペしたデータに、見えない文字が紛れ込んでいた――そんな経験はありませんか？</p>



<p>目視ではわからない制御文字が混入すると、数式がうまく動かなかったり、集計結果がずれたりします。原因を特定するだけでも一苦労ですよね。</p>



<p>そんなときに使うのが<strong>CLEAN関数</strong>です。改行やタブなどの「印刷できない制御文字」をまとめて削除してくれます。</p>



<p>この記事では、CLEAN関数の基本から、TRIM関数・SUBSTITUTE関数との組み合わせ、CLEAN関数では消えない文字への対処法まで紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのCLEAN関数とは？印刷できない制御文字を削除する関数</a><ol><li><a href="#toc2" tabindex="0">CLEAN関数の構文と引数</a></li><li><a href="#toc3" tabindex="0">CLEAN関数が削除する文字・しない文字</a></li></ol></li><li><a href="#toc4" tabindex="0">基本的な使い方：改行・制御文字を一括削除する</a><ol><li><a href="#toc5" tabindex="0">CSVインポートで混入した改行を削除する</a></li><li><a href="#toc6" tabindex="0">CODE関数で制御文字を見つける診断コード</a></li></ol></li><li><a href="#toc7" tabindex="0">TRIM関数・SUBSTITUTE関数との組み合わせパターン</a><ol><li><a href="#toc8" tabindex="0">CLEAN+TRIMで制御文字とスペースを同時に除去</a></li><li><a href="#toc9" tabindex="0">CLEAN+SUBSTITUTE+TRIMで完全クリーニング</a></li></ol></li><li><a href="#toc10" tabindex="0">CLEAN関数で消えない文字への対処法</a><ol><li><a href="#toc11" tabindex="0">CHAR(160)ノーブレークスペースの削除</a></li><li><a href="#toc12" tabindex="0">Unicode制御文字の削除（REGEXREPLACE）</a></li></ol></li><li><a href="#toc13" tabindex="0">よくある質問（CLEAN関数）</a></li><li><a href="#toc14" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのCLEAN関数とは？印刷できない制御文字を削除する関数</span></h2>



<p>CLEAN関数（読み方：クリーン関数）は、<strong>テキストからASCII制御文字を削除する関数</strong>です。</p>



<p>名前は英語の「clean（きれいにする）」が語源です。目に見えない不要な文字をきれいに取り除くイメージですね。</p>



<p>CLEAN関数が削除するのは、ASCIIコード0〜31の「制御文字」と呼ばれる文字です。代表的なものを挙げると、次のとおりです。</p>



<ul class="wp-block-list"><li>CHAR(9)：タブ</li><li>CHAR(10)：改行（ラインフィード / LF）</li><li>CHAR(13)：復帰（キャリッジリターン / CR）</li></ul>



<p>これらは画面に表示されない文字なので、目視では見つけられません。CLEAN関数を使えば、まとめて削除できます。</p>



<h3 class="wp-block-heading"><span id="toc2">CLEAN関数の構文と引数</span></h3>



<pre class="wp-block-code"><code>=CLEAN(テキスト)</code></pre>



<p>カッコの中に「制御文字を削除したい文字列」を入れるだけです。</p>



<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></tbody></table></figure>



<p>引数はひとつだけ。<a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>と同じく、シンプルな構文です。</p>



<h3 class="wp-block-heading"><span id="toc3">CLEAN関数が削除する文字・しない文字</span></h3>



<p>CLEAN関数はすべての不要文字を消してくれるわけではありません。削除できる範囲をきちんと把握しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>文字の種類</th><th>文字コード</th><th>CLEAN</th><th>TRIM</th><th>主な発生源</th></tr></thead><tbody><tr><td>改行（LF）</td><td>CHAR(10)</td><td>削除できる</td><td>不可</td><td>CSVインポート・コピペ</td></tr><tr><td>復帰（CR）</td><td>CHAR(13)</td><td>削除できる</td><td>不可</td><td>Windows環境のCSV</td></tr><tr><td>タブ</td><td>CHAR(9)</td><td>削除できる</td><td>不可</td><td>TSVファイル・コピペ</td></tr><tr><td>半角スペース</td><td>CHAR(32)</td><td>削除できない</td><td>削除できる</td><td>手入力・CSV</td></tr><tr><td>全角スペース</td><td>—</td><td>削除できない</td><td>削除できない</td><td>日本語入力の切り替えミス</td></tr><tr><td>ノーブレークスペース</td><td>CHAR(160)</td><td>削除できない</td><td>削除できない</td><td>Webコピペ・HTML</td></tr></tbody></table></figure>



<p>ポイントは、CLEAN関数とTRIM関数は<strong>担当範囲が違う</strong>ということです。CLEAN関数は制御文字（CHAR(0)〜31）を担当し、TRIM関数は半角スペース（CHAR(32)）を担当します。どちらか片方だけでは不十分なケースが多いので、組み合わせて使うのが定番です。</p>



<h2 class="wp-block-heading"><span id="toc4">基本的な使い方：改行・制御文字を一括削除する</span></h2>



<h3 class="wp-block-heading"><span id="toc5">CSVインポートで混入した改行を削除する</span></h3>



<p>CSVファイルをインポートすると、セルの中に改行が入り込むことがあります。CLEAN関数で削除してみましょう。</p>



<p>A1に「東京都千代田区」（セル内改行あり）が入っているとします。</p>



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



<p>結果は「東京都千代田区」です。改行が削除されて、1行にまとまりました。</p>



<p>列全体に適用するのが実務的な使い方です。B1に数式を入れて下方向にコピーすれば、一括で整形できますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>改行を削除するのではなく、改行をスペースや特定の区切り文字に「置換」したい場合は、<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>を使います。<code>=SUBSTITUTE(A1, CHAR(10), " ")</code> で改行を半角スペースに置き換えられます。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc6">CODE関数で制御文字を見つける診断コード</span></h3>



<p>「制御文字が入っているかどうか」を確認したいときは、CODE関数が便利です。CODE関数は、文字列の先頭1文字のASCIIコードを返します。</p>



<p>実務で手軽に使える診断コードを紹介します。</p>



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



<p>結果が「0」なら制御文字は入っていません。「0」以外なら、その数だけ制御文字が混入しています。</p>



<p>たとえばA1に改行が2つ入っている場合、LEN(A1)は元の文字数+2、LEN(CLEAN(A1))は元の文字数です。差は「2」。制御文字が2文字あるとわかります。</p>



<p><a href="https://mashukabu.com/spreadsheet-len-function/">LEN関数の使い方</a>と組み合わせた、覚えておくと便利な診断テクニックです。</p>



<h2 class="wp-block-heading"><span id="toc7">TRIM関数・SUBSTITUTE関数との組み合わせパターン</span></h2>



<p>CLEAN関数は制御文字だけを削除する関数です。実務では、スペースや見えない文字も同時に処理したいケースがほとんどです。ここでは定番の組み合わせパターンを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc8">CLEAN+TRIMで制御文字とスペースを同時に除去</span></h3>



<p>もっとも基本的な組み合わせです。CLEAN関数で制御文字を削除し、<a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>で余分なスペースを削除します。</p>



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



<p>CSVインポートやコピペデータの整形では、この2つをセットで使うのが定番です。「とりあえずTRIM(CLEAN())」を習慣にしておくと、多くのデータ整形トラブルを未然に防げます。</p>



<h3 class="wp-block-heading"><span id="toc9">CLEAN+SUBSTITUTE+TRIMで完全クリーニング</span></h3>



<p>全角スペースやCHAR(160)（ノーブレークスペース）も含めて、すべての不要文字を一括除去したい場合の数式です。</p>



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



<p>ちょっと長く見えますが、やっていることはシンプルです。</p>



<ol class="wp-block-list"><li>内側のSUBSTITUTE：全角スペースを半角スペースに変換</li><li>外側のSUBSTITUTE：CHAR(160)を半角スペースに変換</li><li>CLEAN：制御文字（改行・タブ等）を削除</li><li>TRIM：余分な半角スペースを削除</li></ol>



<p>この4段構えで、ほぼすべての不要文字を除去できます。外部データを取り込む場面では、このフル版を使っておくと安心です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>同じ列に毎回この長い数式を入れるのが面倒なら、ヘルパー列（補助列）を1列用意して数式を入れておくのがおすすめです。元データを上書きしたい場合は、補助列をコピーして「値のみ貼り付け」で戻しましょう。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc10">CLEAN関数で消えない文字への対処法</span></h2>



<p>CLEAN関数はASCIIコード0〜31の制御文字しか削除しません。それ以外の「見えない文字」は残ったままになります。</p>



<h3 class="wp-block-heading"><span id="toc11">CHAR(160)ノーブレークスペースの削除</span></h3>



<p>Webページからコピペしたデータに混入しやすいのが、CHAR(160)のノーブレークスペースです。見た目は普通のスペースと同じですが、CLEAN関数でもTRIM関数でも削除できません。</p>



<p><a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>でCHAR(160)を指定して置換します。</p>



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



<p>CHAR(160)を半角スペースに変換してから、TRIMで整形するのが定番です。</p>



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



<p>「CLEAN関数を使ったのにまだ変な文字が残っている」という場合は、CHAR(160)を疑ってみてください。</p>



<h3 class="wp-block-heading"><span id="toc12">Unicode制御文字の削除（REGEXREPLACE）</span></h3>



<p>まれに、ASCIIコード128以上のUnicode制御文字が混入することがあります。CLEAN関数の対象外なので、正規表現で除去します。</p>



<p>Googleスプレッドシートには正規表現で置換できるREGEXREPLACE関数があります。</p>



<pre class="wp-block-code"><code>=TRIM(CLEAN(REGEXREPLACE(A1, &quot;[x00-x1Fx7F-x9F]&quot;, &quot;&quot;)))</code></pre>



<p>この正規表現は「ASCIIおよびLatin-1の制御文字」を削除します。CLEANとREGEXREPLACEを組み合わせることで、より広い範囲の制御文字を除去できます。</p>



<p>正規表現が難しいと感じたら、無理に使う必要はありません。ほとんどの実務データは前述の <code>=TRIM(CLEAN(SUBSTITUTE(...)))</code> パターンで十分対処できます。</p>



<h2 class="wp-block-heading"><span id="toc13">よくある質問（CLEAN関数）</span></h2>



<p><strong>Q. CLEAN関数でスペースは削除できますか？</strong></p>



<p>できません。半角スペース（CHAR(32)）はCLEAN関数の対象外です。スペースの削除には<a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>を使ってください。制御文字とスペースの両方を消したいなら <code>=TRIM(CLEAN(A1))</code> がおすすめです。</p>



<p><strong>Q. CLEAN関数で改行をスペースに置き換えられますか？</strong></p>



<p>CLEAN関数は改行を「削除」するだけです。スペースに「置換」したい場合は、<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>で <code>=SUBSTITUTE(A1, CHAR(10), " ")</code> と書いてください。</p>



<p><strong>Q. ExcelのCLEAN関数との違いはありますか？</strong></p>



<p>基本的な動作は同じです。どちらもASCIIコード0〜31の制御文字を削除します。ただし、ExcelファイルをGoogleスプレッドシートで開いた場合、改行コードの扱いに違いが出ることがあります。スプレッドシートではCHAR(10)がセル内改行です。</p>



<p><strong>Q. CLEAN関数を使っても文字が残る場合は？</strong></p>



<p>CHAR(160)（ノーブレークスペース）やUnicode制御文字はCLEAN関数の対象外です。<code>=CODE(MID(A1, N, 1))</code> で残っている文字のコードを調べ、<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>で個別に削除してください。</p>



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



<p>CLEAN関数は、改行やタブなどの制御文字を削除するシンプルな関数です。</p>



<p>ポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=CLEAN(テキスト)</code> の1引数だけ。ASCIIコード0〜31の制御文字をまとめて削除する</li><li>CLEAN関数と<a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>は担当範囲が違う。<code>=TRIM(CLEAN(A1))</code> のセット使いが定番</li><li><code>=LEN(A1)-LEN(CLEAN(A1))</code> で制御文字の混入を素早く診断できる</li><li>全角スペースやCHAR(160)はCLEAN関数では消えない。<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>で個別に対処する</li><li>完全クリーニングには <code>=TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(A1,"　"," "),CHAR(160)," ")))</code> を使う</li></ul>



<p>まずは <code>=LEN(A1)-LEN(CLEAN(A1))</code> で、手元のデータに制御文字が潜んでいないかチェックしてみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-clean-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのREGEXREPLACE関数の使い方｜正規表現で文字列を置換</title>
		<link>https://mashukabu.com/spreadsheet-regexreplace-function/</link>
					<comments>https://mashukabu.com/spreadsheet-regexreplace-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:31:01 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[REGEXEXTRACT関数]]></category>
		<category><![CDATA[REGEXMATCH関数]]></category>
		<category><![CDATA[REGEXREPLACE関数]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[文字列操作]]></category>
		<category><![CDATA[正規表現]]></category>
		<category><![CDATA[関数の使い方]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4775</guid>

					<description><![CDATA[スプレッドシートのREGEXREPLACE関数は、正規表現で文字列を一括置換できる関数です。電話番号のハイフン除去、不要な空白の一括削除、データの書式統一など実務パターンや、SUBSTITUTEとの違い、REGEXMATCH・REGEXEXTRACTとの使い分けまで解説します。]]></description>
										<content:encoded><![CDATA[
<p>スプレッドシートで「電話番号のハイフンをまとめて消したい」「余分なスペースを一括で削除したい」と思ったことはありませんか？ <a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>なら特定の文字を置換できます。でも、「数字だけ消す」「2つ以上の連続スペースを1つにする」といったパターン指定の置換には対応できません。</p>



<p>REGEXREPLACE関数を使えば、<strong>正規表現のパターンに一致する部分をまとめて置換</strong>できます。この記事ではREGEXREPLACE関数の基本から実務パターンまで丁寧に解説しますね。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-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">REGEXREPLACE関数とは？正規表現で文字列を置換する関数</a><ol><li><a href="#toc2" tabindex="0">「正規表現」って何？</a></li></ol></li><li><a href="#toc3" tabindex="0">REGEXREPLACE関数の書き方（構文と引数）</a><ol><li><a href="#toc4" tabindex="0">基本構文</a></li><li><a href="#toc5" tabindex="0">後方参照（キャプチャグループの再利用）</a></li></ol></li><li><a href="#toc6" tabindex="0">REGEXREPLACE関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">特定の文字を削除する</a></li><li><a href="#toc8" tabindex="0">数字だけを削除する</a></li><li><a href="#toc9" tabindex="0">特定の文字を別の文字に置換する</a></li><li><a href="#toc10" tabindex="0">大文字・小文字を区別せずに置換する</a></li></ol></li><li><a href="#toc11" tabindex="0">実務で使えるパターン集</a><ol><li><a href="#toc12" tabindex="0">電話番号のハイフンを一括削除する</a></li><li><a href="#toc13" tabindex="0">余分なスペースを1つにまとめる</a></li><li><a href="#toc14" tabindex="0">数字以外をすべて削除する</a></li><li><a href="#toc15" tabindex="0">8桁の数字を日付形式に変換する</a></li><li><a href="#toc16" tabindex="0">HTMLタグを一括除去する</a></li><li><a href="#toc17" tabindex="0">ARRAYFORMULA関数と組み合わせて一括置換する</a></li></ol></li><li><a href="#toc18" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc19" tabindex="0">数値セルで#VALUE!エラーになるケース</a></li><li><a href="#toc20" tabindex="0">正規表現の特殊文字をエスケープし忘れるケース</a></li></ol></li><li><a href="#toc21" tabindex="0">SUBSTITUTE関数との違い</a><ol><li><a href="#toc22" tabindex="0">同じ処理を両方で書いてみる</a></li><li><a href="#toc23" tabindex="0">比較表</a></li><li><a href="#toc24" tabindex="0">どちらを使うべき？</a></li></ol></li><li><a href="#toc25" tabindex="0">REGEXMATCH・REGEXEXTRACTとの使い分け</a><ol><li><a href="#toc26" tabindex="0">具体例で比較</a></li></ol></li><li><a href="#toc27" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p>REGEXREPLACE関数は、セルの文字列から<strong>正規表現パターンに一致する部分を別の文字列に置換</strong>して返す関数です。読み方は「レジェックスリプレイス」。「Regex（正規表現）」+「Replace（置換）」が語源です。</p>



<p>たとえば「03-1234-5678」に対して <code>-</code> のパターンで空文字に置換すると「0312345678」が返ります。ハイフンをまとめて除去できるわけです。</p>



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



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



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



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



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



<pre class="wp-block-code"><code>=REGEXREPLACE(テキスト, 正規表現, 置換文字列)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>テキスト</td><td>必須</td><td>置換対象の文字列またはセル参照</td></tr><tr><td>正規表現</td><td>必須</td><td>置換したいパターンの正規表現</td></tr><tr><td>置換文字列</td><td>必須</td><td>一致部分を置き換える文字列（空文字 <code>""</code> で削除）</td></tr></tbody></table></figure>



<p>戻り値は<strong>置換後の文字列</strong>です。パターンに一致する部分がなければ元の文字列がそのまま返ります。エラーにはならないのがREGEXEXTRACTとの違いです。</p>



<h3 class="wp-block-heading"><span id="toc5">後方参照（キャプチャグループの再利用）</span></h3>



<p>正規表現の括弧 <code>()</code> でキャプチャした部分を、置換文字列の中で <code>$1</code>、<code>$2</code> のように参照できます。これを「後方参照」と呼びます。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(&quot;20240315&quot;, &quot;(d{4})(d{2})(d{2})&quot;, &quot;$1/$2/$3&quot;)
  → &quot;2024/03/15&quot;（8桁の数字を日付形式に変換）</code></pre>



<p><code>$1</code> は1番目の括弧、<code>$2</code> は2番目の括弧に一致した部分です。この仕組みを使えば「削除」だけでなく「並べ替え」や「書式変換」もできますよ。</p>



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



<h3 class="wp-block-heading"><span id="toc7">特定の文字を削除する</span></h3>



<p>セルA2に「03-1234-5678」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;-&quot;, &quot;&quot;)   → &quot;0312345678&quot;（ハイフンを削除）</code></pre>



<p>第3引数を空文字 <code>""</code> にすると、一致した部分が削除されます。REGEXREPLACE関数はパターンに一致する部分を<strong>すべて</strong>置換します。ハイフンが2つあっても、両方とも一度に消えますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">数字だけを削除する</span></h3>



<p>セルA2に「ABC-123-DEF」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[0-9]&quot;, &quot;&quot;)   → &quot;ABC--DEF&quot;（数字だけ削除）
=REGEXREPLACE(A2, &quot;[0-9-]&quot;, &quot;&quot;)  → &quot;ABCDEF&quot;（数字とハイフンを削除）</code></pre>



<p><code>[0-9]</code> は「数字1文字」を意味します。角括弧の中にハイフンも入れれば、まとめて削除できます。</p>



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



<p>セルA2に「2024/03/15」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;/&quot;, &quot;-&quot;)   → &quot;2024-03-15&quot;（スラッシュをハイフンに変換）</code></pre>



<p>単純な文字置換なら<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>でもできます。REGEXREPLACE関数の真価は、次のようなパターン置換にあります。</p>



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



<p>REGEXREPLACE関数はデフォルトで<strong>大文字と小文字を区別</strong>します。区別せずに置換したいときは <code>(?i)</code> を先頭に付けます。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(&quot;Hello World&quot;, &quot;(?i)hello&quot;, &quot;Hi&quot;)
  → &quot;Hi World&quot;（大文字小文字を無視して置換）</code></pre>



<p><code>(?i)</code> は「case-insensitive（大文字小文字を無視）」のフラグです。英語データを扱うときに便利ですね。</p>



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



<h3 class="wp-block-heading"><span id="toc12">電話番号のハイフンを一括削除する</span></h3>



<p>電話番号からハイフンやスペースを取り除いて数字だけにします。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th><th>説明</th></tr></thead><tbody><tr><td>03-1234-5678</td><td>0312345678</td><td>ハイフンを除去</td></tr><tr><td>090 1234 5678</td><td>09012345678</td><td>スペースを除去</td></tr><tr><td>090-1234-5678</td><td>09012345678</td><td>ハイフンを除去</td></tr></tbody></table></figure>



<p><code>s</code> は「空白文字（スペース・タブなど）」を意味します。<code>[-s]</code> でハイフンと空白をまとめて指定できます。</p>



<h3 class="wp-block-heading"><span id="toc13">余分なスペースを1つにまとめる</span></h3>



<p>データの中に連続スペースが混在しているとき、すべて1つのスペースに統一します。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th></tr></thead><tbody><tr><td>山田　　太郎</td><td>山田 太郎</td></tr><tr><td>東京都　 　渋谷区</td><td>東京都 渋谷区</td></tr></tbody></table></figure>



<p><code>s{2,}</code> は「空白文字が2つ以上連続」を意味します。これを1つのスペースに置換するわけです。<a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>では前後の空白しか除去できません。文中の連続スペースを整理したいならREGEXREPLACE関数が便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc14">数字以外をすべて削除する</span></h3>



<p>住所や備考欄から数字だけを取り出したいときに使います。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th></tr></thead><tbody><tr><td>〒100-0001</td><td>1000001</td></tr><tr><td>部屋番号: 301号室</td><td>301</td></tr><tr><td>TEL: 03-1234-5678</td><td>0312345678</td></tr></tbody></table></figure>



<p><code>[^0-9]</code> は「数字以外の文字」を意味します。<code>^</code> が角括弧の先頭にあると「否定」になります。</p>



<h3 class="wp-block-heading"><span id="toc15">8桁の数字を日付形式に変換する</span></h3>



<p>「20240315」のような8桁の数字を「2024/03/15」に変換します。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th></tr></thead><tbody><tr><td>20240315</td><td>2024/03/15</td></tr><tr><td>20231225</td><td>2023/12/25</td></tr></tbody></table></figure>



<p>後方参照 <code>$1/$2/$3</code> を使って、キャプチャした年・月・日をスラッシュ区切りに並べ替えています。</p>



<h3 class="wp-block-heading"><span id="toc16">HTMLタグを一括除去する</span></h3>



<p>Webからコピーしたデータに混じったHTMLタグを取り除きます。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>セルの値</th><th>結果</th></tr></thead><tbody><tr><td><code><b>重要</b>なお知らせ</code></td><td>重要なお知らせ</td></tr><tr><td><code><a href="...">リンク</a></code></td><td>リンク</td></tr></tbody></table></figure>



<p><code><[^>]+></code> は「<code><</code> で始まり <code>></code> で終わるタグ」を意味します。Webからのデータ貼り付けで重宝しますね。</p>



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



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



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



<p>この数式をB2セルに1つ入れるだけで、A2からA100までのデータからハイフンを一括削除できます。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>テキストが数値</td><td><code>=REGEXREPLACE(TEXT(A2,"0"), "パターン", "置換")</code> で文字列に変換</td></tr><tr><td>#VALUE!</td><td>テキストが空セル</td><td><code>=IF(A2="", "", REGEXREPLACE(A2, "パターン", "置換"))</code> で空チェック</td></tr><tr><td>#REF!</td><td>正規表現の構文エラー</td><td>括弧の閉じ忘れ・エスケープ漏れを確認</td></tr><tr><td>置換されない</td><td>パターンの大文字小文字が不一致</td><td><code>(?i)</code> を先頭に付けて大文字小文字を無視</td></tr></tbody></table></figure>



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



<p>REGEXREPLACE関数の第1引数は<strong>文字列</strong>が必要です。セルに数値が入っている場合は#VALUE!エラーになります。</p>



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



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



<h3 class="wp-block-heading"><span id="toc20">正規表現の特殊文字をエスケープし忘れるケース</span></h3>



<p>ピリオド <code>.</code>、括弧 <code>()</code>、プラス <code>+</code> などは正規表現の特殊文字です。これらの文字そのものを置換したい場合は <code></code> でエスケープしてください。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;.&quot;, &quot;X&quot;)     → すべての文字がXに置換される
=REGEXREPLACE(A2, &quot;.&quot;, &quot;X&quot;)    → ピリオドだけがXに置換される</code></pre>



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



<p><a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>でも文字列の置換はできます。REGEXREPLACE関数との違いを整理しましょう。</p>



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



<p>電話番号「03-1234-5678」からハイフンを除去する場合です。</p>



<p><strong>SUBSTITUTE関数の場合:</strong></p>



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



<p><strong>REGEXREPLACE関数の場合:</strong></p>



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



<p>この例では同じ結果になります。では「数字だけを削除する」場合はどうでしょう。</p>



<p><strong>SUBSTITUTE関数の場合:</strong></p>



<pre class="wp-block-code"><code>=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
  SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
  A2,&quot;0&quot;,&quot;&quot;),&quot;1&quot;,&quot;&quot;),&quot;2&quot;,&quot;&quot;),&quot;3&quot;,&quot;&quot;),&quot;4&quot;,&quot;&quot;),&quot;5&quot;,&quot;&quot;),&quot;6&quot;,&quot;&quot;),&quot;7&quot;,&quot;&quot;),&quot;8&quot;,&quot;&quot;),&quot;9&quot;,&quot;&quot;)</code></pre>



<p><strong>REGEXREPLACE関数の場合:</strong></p>



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



<p>パターン置換ではREGEXREPLACE関数が圧倒的にシンプルですね。</p>



<h3 class="wp-block-heading"><span id="toc23">比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>REGEXREPLACE</th><th>SUBSTITUTE</th></tr></thead><tbody><tr><td>正規表現</td><td>使える</td><td>使えない</td></tr><tr><td>パターン置換</td><td>得意（1つの数式で完結）</td><td>苦手（ネストが必要）</td></tr><tr><td>大文字小文字の区別</td><td>区別する（<code>(?i)</code> で無視可）</td><td>区別する</td></tr><tr><td>一致しない場合</td><td>元の文字列を返す</td><td>元の文字列を返す</td></tr><tr><td>置換回数の指定</td><td>できない（すべて置換）</td><td>第4引数で指定可能</td></tr><tr><td>Excel互換</td><td>なし（Sheets独自）</td><td>あり</td></tr><tr><td>学習コスト</td><td>正規表現の知識が必要</td><td>低い</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc24">どちらを使うべき？</span></h3>



<ul class="wp-block-list"><li><strong>固定の文字を置換</strong>（ハイフンを消す、「株式会社」を「(株)」に変える）→ <a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>で十分</li><li><strong>パターンで置換</strong>（数字をすべて消す、連続スペースを詰める）→ <strong>REGEXREPLACE関数</strong>一択</li><li><strong>N番目だけ置換</strong>（2つ目のハイフンだけ消す）→ <a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>の第4引数</li><li><strong>Excelとの互換性が必要</strong> → SUBSTITUTE関数を使う</li></ul>



<p>固定文字の置換ならSUBSTITUTE、パターン置換ならREGEXREPLACEと覚えておけば迷いません。</p>



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



<p>スプレッドシートには正規表現を使う関数が3つあります。目的で使い分けましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>目的</th><th>戻り値</th><th>使用例</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH</a></td><td>パターンに<strong>一致するか判定</strong></td><td>TRUE / FALSE</td><td>入力チェック、条件分岐</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-regexextract-function/">REGEXEXTRACT</a></td><td>パターンに一致する部分を<strong>抽出</strong></td><td>一致した文字列</td><td>ドメイン抽出、番号取り出し</td></tr><tr><td>REGEXREPLACE</td><td>パターンに一致する部分を<strong>置換</strong></td><td>置換後の文字列</td><td>ハイフン除去、書式統一</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc26">具体例で比較</span></h3>



<p>セルA2に「注文番号: ORD-2024-0123」が入っているとします。</p>



<pre class="wp-block-code"><code>=REGEXMATCH(A2, &quot;ORD-d{4}-d{4}&quot;)
  → TRUE（注文番号パターンに一致するか判定）

=REGEXEXTRACT(A2, &quot;ORD-d{4}-d{4}&quot;)
  → &quot;ORD-2024-0123&quot;（注文番号部分を抽出）

=REGEXREPLACE(A2, &quot;ORD-&quot;, &quot;&quot;)
  → &quot;注文番号: 2024-0123&quot;（「ORD-」を除去）</code></pre>



<p><strong>判定</strong>は<a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH</a>、<strong>抽出</strong>は<a href="https://mashukabu.com/spreadsheet-regexextract-function/">REGEXEXTRACT</a>、<strong>置換</strong>はREGEXREPLACEと覚えておきましょう。これでREGEX3関数シリーズはすべて揃いました。</p>



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



<p>REGEXREPLACE関数は、正規表現でパターンに一致する部分を置換できるスプレッドシート独自の関数です。</p>



<ul class="wp-block-list"><li><strong>基本</strong>: <code>=REGEXREPLACE(テキスト, 正規表現, 置換文字列)</code> で一致部分を置換</li><li><strong>後方参照</strong>: 括弧 <code>()</code> でキャプチャした部分を <code>$1</code> <code>$2</code> で再利用できる</li><li><strong>実務活用</strong>: ハイフン除去・連続スペース整理・数字以外の削除・HTMLタグ除去に最適</li><li><strong>使い分け</strong>: 固定文字の置換はSUBSTITUTE、パターン置換はREGEXREPLACE</li><li><strong>REGEX3関数</strong>: 判定はREGEXMATCH、抽出はREGEXEXTRACT、置換はREGEXREPLACE</li></ul>



<p>SUBSTITUTE関数ではカバーしきれないパターン置換が必要なとき、ぜひ活用してみてください。正規表現の基本は<a href="https://mashukabu.com/spreadsheet-regexmatch-function/">REGEXMATCH関数の記事</a>でまとめています。そちらも合わせてチェックしてみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-regexreplace-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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との違い、FIND関数との組み合わせ応用まで実務例付きでわかります。]]></description>
										<content:encoded><![CDATA[
<p>スプレッドシートで「3文字目から2文字だけ置き換えたい」と思ったことはありませんか？商品コードの一部を変更したい、電話番号の市外局番だけ差し替えたい。<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>では文字列を指定して置換しますが、「何文字目から何文字分」という位置で指定したい場面もありますよね。</p>



<p>REPLACE関数を使えば、位置と文字数を指定してピンポイントで置換できます。この記事ではスプレッドシートでのREPLACE関数の基本から、実務での活用パターン、<a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a>との組み合わせ応用まで丁寧に解説します。</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">スプレッドシートのREPLACE関数とは？位置指定で文字列を置換する関数</a><ol><li><a href="#toc2" tabindex="0">基本構文と引数</a></li></ol></li><li><a href="#toc3" tabindex="0">REPLACE関数の基本的な使い方</a><ol><li><a href="#toc4" tabindex="0">文字数を0にすると「挿入」になる</a></li><li><a href="#toc5" tabindex="0">開始位置以降をすべて置換する</a></li></ol></li><li><a href="#toc6" tabindex="0">REPLACE関数の実務活用パターン</a><ol><li><a href="#toc7" tabindex="0">電話番号の市外局番を置き換える</a></li><li><a href="#toc8" tabindex="0">固定フォーマットの年度部分だけ変更する</a></li><li><a href="#toc9" tabindex="0">個人情報の一部をマスクする（伏せ字処理）</a></li></ol></li><li><a href="#toc10" tabindex="0">FIND関数と組み合わせて動的に位置を指定する</a><ol><li><a href="#toc11" tabindex="0">メールアドレスのドメイン部分を置き換える</a></li><li><a href="#toc12" tabindex="0">区切り文字の前半だけを差し替える</a></li></ol></li><li><a href="#toc13" tabindex="0">REPLACE関数とSUBSTITUTE関数の使い分け</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><ol><li><a href="#toc17" tabindex="0">#VALUE!エラーが出る</a></li><li><a href="#toc18" tabindex="0">開始位置が文字数を超えている</a></li><li><a href="#toc19" tabindex="0">空セルを渡した場合</a></li></ol></li><li><a href="#toc20" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



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



<p>たとえば「ABCDE」の2文字目から3文字分を「XY」に置き換えると「AXYE」になります。位置と長さで置換範囲を決めるので、置き換えたい文字の内容を知らなくても使えるのがポイントです。</p>



<h3 class="wp-block-heading"><span id="toc2">基本構文と引数</span></h3>



<pre class="wp-block-code"><code>=REPLACE(テキスト, 開始位置, 文字数, 新しいテキスト)</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>置き換えを始める位置（1から数える）</td></tr><tr><td>文字数</td><td>必須</td><td>置き換える文字の数</td></tr><tr><td>新しいテキスト</td><td>必須</td><td>置き換え後の文字列</td></tr></tbody></table></figure>



<p>4つの引数はすべて必須です。<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>は省略可能な引数がありますが、REPLACE関数は1つも省略できません。</p>



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



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



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



<p>3文字目の「C」と4文字目の「D」が「XX」に置き換わりました。開始位置は1始まりなので、先頭が1、次が2と数えます。</p>



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



<p>文字数に0を指定すると、元の文字を削除せずに新しいテキストを挿入できます。</p>



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



<p>3文字目の「C」の前にハイフンが挿入されました。文字を消さずに割り込ませたい場合に便利です。</p>



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



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



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



<p>4文字目以降の「DEFG」が「XYZ」に置き換わりました。残りが4文字なのに文字数を100にしても問題ありません。「この位置から後ろは全部変えたい」ときに使えるテクニックです。</p>



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



<h3 class="wp-block-heading"><span id="toc7">電話番号の市外局番を置き換える</span></h3>



<p>電話番号の先頭3桁（市外局番）を別の番号に差し替える例です。A2に「03-1234-5678」が入っています。</p>



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



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



<h3 class="wp-block-heading"><span id="toc8">固定フォーマットの年度部分だけ変更する</span></h3>



<p>管理番号が「2024-A001」のように「年度-連番」のフォーマットになっているとします。年度部分だけを更新する場合です。</p>



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



<p>先頭4文字の「2024」を「2025」に置き換えました。連番部分はそのままなので、年度切り替え時のデータ更新が数式1つで済みます。</p>



<h3 class="wp-block-heading"><span id="toc9">個人情報の一部をマスクする（伏せ字処理）</span></h3>



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



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



<p>4文字目から4文字分を「****」に置き換えました。先頭3桁と末尾4桁は残しつつ、中間をマスクできます。個人情報を含む一覧を配布するときに便利ですよ。</p>



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



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



<p>2文字目の「田」を「○」に置き換えて、苗字の一部を伏せました。</p>



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



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



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



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



<p>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>結果は「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>FIND関数が「@」の位置を自動で調べてくれるので、ユーザー名の長さがバラバラでも正しく動作します。</p>



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



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



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



<p>スプレッドシートの置換系関数で一番迷うのが、REPLACE関数と<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>の使い分けです。ひとことで言えば、<strong>SUBSTITUTEは「文字」で指定、REPLACEは「位置」で指定</strong>です。</p>



<h3 class="wp-block-heading"><span id="toc14">比較表</span></h3>



<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>省略で全置換、第4引数でN番目のみ</td></tr><tr><td>大文字/小文字</td><td>区別しない（位置指定のため無関係）</td><td>区別する</td></tr><tr><td>挿入（文字数0）</td><td>可能</td><td>不可</td></tr><tr><td>向いている場面</td><td>固定フォーマット・伏せ字・位置が決まっている</td><td>特定の文字を検索して全置換</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc15">どちらを使うか迷ったら</span></h3>



<p>判断基準はシンプルです。</p>



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



<p>「ハイフンを全部消したい」ならSUBSTITUTEです。「3文字目から2文字を変えたい」ならREPLACEです。</p>



<p>実務で使う頻度はSUBSTITUTEのほうが圧倒的に高いです。REPLACEは「固定フォーマットの一部だけ変えたい」「伏せ字にしたい」など、位置が決まっている場面で活躍します。</p>



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



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



<p>開始位置に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>プログラミングに慣れている方は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="toc18">開始位置が文字数を超えている</span></h3>



<p>開始位置がテキストの文字数より大きいと、末尾に新しいテキストが追加されます。エラーにはなりません。</p>



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



<p>意図しない結果になるので、開始位置は元のテキストの文字数以内にしてくださいね。</p>



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



<p>テキストが空セルの場合、新しいテキストだけが返ります。</p>



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



<p>エラーにはなりませんが、元データが空なのに結果が出力される点に注意してください。空セルチェックにはIF関数と組み合わせると安全です。</p>



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



<p>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はエラー）</td></tr><tr><td>文字数0</td><td>削除せず挿入として機能</td></tr><tr><td>文字数超過</td><td>エラーにならず末尾まで置換</td></tr><tr><td>SUBSTITUTEとの違い</td><td>SUBSTITUTE=文字指定、REPLACE=位置指定</td></tr></tbody></table></figure>



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



<p>まずは市外局番の差し替えや伏せ字処理から試してみてください。FIND関数と組み合わせれば、位置が動的に変わるデータにも対応できるようになりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-replace-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのTRIM関数の使い方｜余分なスペースを一括削除</title>
		<link>https://mashukabu.com/spreadsheet-trim-function/</link>
					<comments>https://mashukabu.com/spreadsheet-trim-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 10:41:02 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[COUNTIF]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[TRIM関数]]></category>
		<category><![CDATA[VLOOKUP]]></category>
		<category><![CDATA[スペース削除]]></category>
		<category><![CDATA[文字列操作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4382</guid>

					<description><![CDATA[スプレッドシートのTRIM関数は、コピペデータの余分なスペースを自動削除する関数です。VLOOKUPが一致しない3大スペース原因を比較表で解説し、LEN診断コード・COUNTIF+TRIM応用・全角スペース対処法まで網羅。]]></description>
										<content:encoded><![CDATA[
<p>外部システムからコピペしたデータで、VLOOKUPが「なぜか一致しない」経験はありませんか？</p>



<p>目視では同じ文字列なのに#N/Aが返る。COUNTIFの集計結果も合わない。原因を調べると、先頭や末尾に見えないスペースが紛れ込んでいた――そんなトラブル、意外と多いですよね。</p>



<p>そんなときに使うのが<strong>TRIM関数</strong>です。余分なスペースを自動で削除してくれます。コピペデータの整形には欠かせない関数です。</p>



<p>この記事では、スプレッドシートのTRIM関数の基本から、VLOOKUP・COUNTIFとの組み合わせ、全角スペースへの対処法まで紹介します。</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">スプレッドシートのTRIM関数とは？余分なスペースを自動削除する関数</a><ol><li><a href="#toc2" tabindex="0">TRIM関数の構文と引数</a></li><li><a href="#toc3" tabindex="0">削除されるスペース・されないスペースの違い</a></li></ol></li><li><a href="#toc4" tabindex="0">基本の使い方：前後・連続スペースをまとめて消す</a><ol><li><a href="#toc5" tabindex="0">先頭・末尾スペースの削除（コピペデータの定番整形）</a></li><li><a href="#toc6" tabindex="0">単語間の連続スペースを1つに圧縮する</a></li></ol></li><li><a href="#toc7" tabindex="0">VLOOKUPが一致しない？スペースが原因の3パターン</a><ol><li><a href="#toc8" tabindex="0">3大スペース原因の比較表</a></li><li><a href="#toc9" tabindex="0">LEN関数でスペースを診断するコード</a></li><li><a href="#toc10" tabindex="0">VLOOKUP+TRIMのネストで検索値を自動整形</a></li></ol></li><li><a href="#toc11" tabindex="0">COUNTIF+TRIM応用｜スペース混じりのデータを正確にカウント</a></li><li><a href="#toc12" tabindex="0">全角スペースはTRIMで消えない｜SUBSTITUTE組み合わせ技</a><ol><li><a href="#toc13" tabindex="0">SUBSTITUTE+TRIMで全角・半角を一括処理</a></li><li><a href="#toc14" tabindex="0">REGEXREPLACEでまとめてクリーニングする方法</a></li></ol></li><li><a href="#toc15" tabindex="0">よくある質問（TRIM関数）</a></li><li><a href="#toc16" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのTRIM関数とは？余分なスペースを自動削除する関数</span></h2>



<p>TRIM関数（読み方：トリム関数）は、<strong>テキストから余分なスペースを削除する関数</strong>です。</p>



<p>名前は英語の「trim（刈り込む・整える）」が語源です。文字列の前後についたスペースを刈り取るイメージですね。</p>



<p>TRIM関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>先頭のスペースを削除する</li><li>末尾のスペースを削除する</li><li>単語間の連続スペースを1つに圧縮する</li></ul>



<p>Googleスプレッドシートには「データ → データクリーンアップ → 空白文字を削除」というメニューもあります。ただし、数式で処理するほうが再現性が高く、大量データにも対応しやすいですよ。</p>



<h3 class="wp-block-heading"><span id="toc2">TRIM関数の構文と引数</span></h3>



<pre class="wp-block-code"><code>=TRIM(テキスト)</code></pre>



<p>カッコの中に「スペースを削除したい文字列」を入れるだけです。</p>



<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></tbody></table></figure>



<p>引数はひとつだけ。シンプルな構文なので、すぐに使い始められます。</p>



<h3 class="wp-block-heading"><span id="toc3">削除されるスペース・されないスペースの違い</span></h3>



<p>TRIM関数が削除するのは<strong>ASCIIコード32の半角スペースだけ</strong>です。ここが重要なポイントです。</p>



<p>全角スペースやWebコピペで混入するCHAR(160)は削除できません。<a href="https://mashukabu.com/excel-function-howto-use-trim/">ExcelのTRIM関数</a>は全角スペースも削除しますが、Googleスプレッドシートでは残ったままになります。</p>



<p>削除できる文字・できない文字を表にまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>スペース種別</th><th>TRIM</th><th>SUBSTITUTE</th><th>CLEAN</th><th>主な発生源</th></tr></thead><tbody><tr><td>半角スペース（前後・連続）</td><td>削除できる</td><td>全削除可</td><td>不可</td><td>CSVインポート・手入力ミス</td></tr><tr><td>全角スペース</td><td>削除できない</td><td>削除可</td><td>不可</td><td>日本語入力切り替え時のミス</td></tr><tr><td>CHAR(160)</td><td>削除できない</td><td>CHAR(160)指定で可</td><td>不可</td><td>Webコピペ・HTMLデータ</td></tr><tr><td>改行・制御文字</td><td>不可</td><td>一部可</td><td>削除可</td><td>Excelコピペ・APIデータ</td></tr></tbody></table></figure>



<p>CLEAN関数はASCII 0〜31の制御文字（改行やタブなど）を削除する関数です。TRIM関数と組み合わせれば、制御文字とスペースの両方を一度に除去できます。</p>



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



<p>全角スペースやCHAR(160)への対処法は、後半のセクションで詳しく解説しますね。</p>



<h2 class="wp-block-heading"><span id="toc4">基本の使い方：前後・連続スペースをまとめて消す</span></h2>



<h3 class="wp-block-heading"><span id="toc5">先頭・末尾スペースの削除（コピペデータの定番整形）</span></h3>



<p>CSVや外部システムからコピペしたデータには、先頭や末尾にスペースが入りがちです。TRIM関数で一発で取り除けます。</p>



<p>A1に「 東京都 」（前後にスペース付き）が入っているとします。</p>



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



<p>結果は「東京都」です。前後のスペースがきれいに消えました。</p>



<p>セル1つだけでなく、列全体に適用するのが実務的な使い方です。B1に数式を入れて下方向にコピーすれば、一括で整形できますよ。</p>



<h3 class="wp-block-heading"><span id="toc6">単語間の連続スペースを1つに圧縮する</span></h3>



<p>TRIM関数は前後のスペースだけでなく、単語の間にある連続スペースも整理してくれます。</p>



<p>A1に「田中   太郎」（スペース3つ）が入っているとします。</p>



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



<p>結果は「田中 太郎」です。3つあったスペースが1つに圧縮されました。</p>



<p>先頭・末尾の削除と連続スペースの圧縮。この2つがTRIM関数の基本動作です。</p>



<h2 class="wp-block-heading"><span id="toc7">VLOOKUPが一致しない？スペースが原因の3パターン</span></h2>



<p>VLOOKUPで#N/Aが返るとき、まず疑いたいのがスペースの混入です。目視では同じ文字列でも、スペースが1つ入るだけで「別の文字列」と判定されます。</p>



<h3 class="wp-block-heading"><span id="toc8">3大スペース原因の比較表</span></h3>



<p>VLOOKUPが一致しない原因になるスペースは、大きく3種類あります。</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>CSV・手入力</td><td>TRIM関数</td></tr><tr><td>全角スペース</td><td>目視でわかりにくい</td><td>日本語入力の切り替えミス</td><td><a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>で半角に変換してからTRIM</td></tr><tr><td>CHAR(160)</td><td>完全に見えない</td><td>Webページのコピペ</td><td>SUBSTITUTEでCHAR(160)を指定して置換</td></tr></tbody></table></figure>



<p>どのスペースも目視では見つけにくいのがやっかいです。次に紹介するLEN関数の診断コードで、スペースが入っているかどうかをチェックしてみてください。</p>



<h3 class="wp-block-heading"><span id="toc9">LEN関数でスペースを診断するコード</span></h3>



<p>スペースが混入しているかどうかは、LEN関数で簡単に判定できます。</p>



<p>LEN関数は文字数を数える関数です。元の文字列とTRIM後の文字列の文字数を比較すれば、スペースが何文字あるか一目瞭然です。</p>



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



<p>結果が「0」なら余分なスペースはありません。「0」以外ならスペースが混入しています。</p>



<p>たとえばA1が「 東京都 」（前後にスペース各1つ）なら、LEN(A1)は5、LEN(TRIM(A1))は3です。差は「2」。スペースが2文字入っているとわかります。</p>



<p>この診断コードを補助列に入れておくと、「どのセルにスペースが入っているか」をすぐに特定できますよ。</p>



<h3 class="wp-block-heading"><span id="toc10">VLOOKUP+TRIMのネストで検索値を自動整形</span></h3>



<p>VLOOKUPの検索値にTRIM関数をネスト（入れ子）すれば、スペースが入っていても正しくマッチします。</p>



<pre class="wp-block-code"><code>=VLOOKUP(TRIM(A2), D:E, 2, FALSE)</code></pre>



<p>A2に「 東京都」のようにスペース付きの値が入っていても、TRIM関数が先にスペースを削除します。そのあとでVLOOKUPが検索するので、#N/Aを回避できます。</p>



<p>検索範囲のほう（D列）にもスペースが入っている場合は、範囲側にもTRIM済みの補助列を用意しましょう。検索値と検索範囲の両方を整形するのが確実です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>VLOOKUPの検索値にTRIMをネストするのは、外部データを扱うときの定番テクニックです。「とりあえずTRIM」の習慣をつけておくと、スペース起因のトラブルを未然に防げます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc11">COUNTIF+TRIM応用｜スペース混じりのデータを正確にカウント</span></h2>



<p><a href="https://mashukabu.com/spreadsheet-countif-function/">COUNTIF関数の使い方</a>でデータを集計するとき、スペース混じりだと正しくカウントされません。「東京都」と「東京都 」は別の文字列として扱われるからです。</p>



<p><a href="https://mashukabu.com/spreadsheet-counta-function/">COUNTA関数の使い方</a>でセル数を数える場面でも、スペースだけのセルが「データあり」と判定されてしまうことがあります。</p>



<p>この問題はTRIM済みの補助列を作ることで解決できます。</p>



<p><strong>手順：</strong></p>



<ol class="wp-block-list"><li>元データの隣の列にTRIM関数を入れる</li><li>TRIM済みの列に対してCOUNTIFで集計する</li></ol>



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



<p>B列にこの数式を入れて下方向にコピーします。これでスペースなしのデータ列ができます。</p>



<pre class="wp-block-code"><code>=COUNTIF(B2:B100, &quot;東京都&quot;)</code></pre>



<p>TRIM済みのB列に対してCOUNTIFを使えば、スペースの有無に関係なく正確にカウントできます。</p>



<p>元データを直接上書きしたい場合は、TRIM済みの列をコピーして「値のみ貼り付け」で元の列に戻しましょう。数式が消えて、整形済みのテキストだけが残ります。</p>



<h2 class="wp-block-heading"><span id="toc12">全角スペースはTRIMで消えない｜SUBSTITUTE組み合わせ技</span></h2>



<p>TRIM関数が削除するのは半角スペースだけです。全角スペースは削除できません。日本語データでは全角スペースが混入しやすいので、別の対処が必要です。</p>



<h3 class="wp-block-heading"><span id="toc13">SUBSTITUTE+TRIMで全角・半角を一括処理</span></h3>



<p><a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>は、指定した文字列を別の文字列に置き換える関数です。全角スペースを半角スペースに変換してから、TRIM関数で整形する2段構えが定番です。</p>



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



<p>数式の中の &#8220;　&#8221; は全角スペース、&#8221; &#8221; は半角スペースです。SUBSTITUTE関数で全角→半角に変換し、そのあとTRIM関数で前後・連続スペースを削除します。</p>



<p>CHAR(160)（ノーブレークスペース。Webページのコピペで混入する見えないスペース）も同時に処理したい場合は、SUBSTITUTEをもう1段ネストします。</p>



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



<p>ちょっと長く見えますが、やっていることはシンプルです。内側のSUBSTITUTEで全角スペースを半角に変換し、外側のSUBSTITUTEでCHAR(160)を半角に変換。最後にTRIMで整形しています。</p>



<h3 class="wp-block-heading"><span id="toc14">REGEXREPLACEでまとめてクリーニングする方法</span></h3>



<p>Googleスプレッドシートには、正規表現で文字列を置換するREGEXREPLACE関数があります。複数種類のスペースを1つの数式でまとめて処理できます。</p>



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



<p><code>[s　]+</code> は「半角スペース・タブ・改行・全角スペースが1文字以上連続したもの」を意味する正規表現パターンです。これらをすべて半角スペース1つに置き換えてから、TRIMで仕上げます。</p>



<p>正規表現が苦手な方はSUBSTITUTE版で十分です。ただ、いろいろな種類のスペースが混在するデータを扱うなら、REGEXREPLACE版のほうがスッキリ書けますよ。</p>



<h2 class="wp-block-heading"><span id="toc15">よくある質問（TRIM関数）</span></h2>



<p><strong>Q. TRIM関数で元データは変わりますか？</strong></p>



<p>変わりません。TRIM関数は別のセルに結果を返す関数です。元データを上書きしたい場合は、TRIM済みの結果をコピーして「値のみ貼り付け」で戻してください。</p>



<p><strong>Q. ExcelのTRIM関数との違いはありますか？</strong></p>



<p><a href="https://mashukabu.com/excel-function-howto-use-trim/">ExcelのTRIM関数の使い方</a>は全角スペースも削除します。一方、GoogleスプレッドシートのTRIM関数は半角スペースしか削除しません。Excelファイルをスプレッドシートで開いたとき、全角スペースの処理結果が変わる可能性があるので注意してください。</p>



<p><strong>Q. TRIM関数で改行は削除できますか？</strong></p>



<p>できません。改行やタブなどの制御文字にはCLEAN関数を使います。<code>=TRIM(CLEAN(A1))</code> のように組み合わせれば、制御文字とスペースの両方を除去できます。</p>



<p><strong>Q. スペースをすべて削除したい場合は？</strong></p>



<p>TRIM関数は単語間のスペースを1つ残します。すべてのスペースを完全に削除したい場合は、SUBSTITUTE関数で半角スペースを空文字に置換してください。<code>=SUBSTITUTE(A1," ","")</code> ですべての半角スペースが消えます。</p>



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



<p>TRIM関数は、コピペデータの余分なスペースを削除するシンプルな関数です。</p>



<p>ポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=TRIM(テキスト)</code> の1引数だけ。前後のスペース削除と連続スペースの圧縮ができる</li><li>VLOOKUPの#N/Aエラーはスペース混入が原因のことが多い。検索値に <code>TRIM()</code> をネストするのが定番の対処法</li><li><code>=LEN(A1)-LEN(TRIM(A1))</code> でスペースの混入を素早く診断できる</li><li><a href="https://mashukabu.com/spreadsheet-countif-function/">COUNTIF関数</a>でスペース混じりデータを集計するときは、TRIM済み補助列を作る</li><li>全角スペースはTRIMでは消えない。<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>で半角に変換してからTRIMで仕上げる</li><li>CHAR(160)やWebコピペの見えないスペースもSUBSTITUTE+TRIMで対処できる</li></ul>



<p>まずは <code>=LEN(A1)-LEN(TRIM(A1))</code> で、手元のデータにスペースが潜んでいないかチェックしてみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-trim-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>スプレッドシートで「この文字を別の文字に置き換えたい」と思ったことはありませんか？電話番号のハイフンを消したい、データのカッコを一括で外したい。手作業で直すと時間がかかりますし、何百行もあると修正漏れが怖いですよね。</p>



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



<p>たとえば「東京都渋谷区」の「渋谷」を「新宿」に置き換えて「東京都新宿区」にできます。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>第4引数は省略するケースがほとんどです。省略すると一致する文字列を<strong>すべて</strong>置き換えます。</p>



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



<p>セルA2に「2024/03/18」が入っているとします。</p>



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



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



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



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



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



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



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



<p>データのコピペで混入する余分なスペースや改行は、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>改行は目に見えないので直接入力できません。<code>CHAR(10)</code>で改行コードを指定するのがコツです。</p>



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



<p>電話番号を「数字だけ」にしたい場面はよくありますよね。</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>A2に「03-1234-5678」が入っていれば「0312345678」が返ります。ハイフンが2つあっても全置換なので1回の数式で完了です。</p>



<p>!<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>SUBSTITUTE関数は1回の呼び出しで1種類の文字しか置換できません。複数の文字を置き換えたい場合は、SUBSTITUTE関数を入れ子（ネスト）にします。</p>



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



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



<p>!<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>ちょっとむずかしく見えますが、やっていることはシンプルです。</p>



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



<p>!<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>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>ネストが深くなると読みにくくなります。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>第4引数を省略するとすべて置換されます。しかし「1番目だけ」「3番目だけ」を置き換えたい場合もありますよね。</p>



<p>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>第4引数に「1」を指定すると、最初の「りんご」だけが置き換わります。「2」なら2番目だけです。</p>



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



<p>商品コードが「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>全体を変えずにピンポイントで置換できるのが第4引数の強みです。使う場面は限られますが、覚えておくと便利ですよ。</p>



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



<p>スプレッドシートには文字列を置換する関数が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>使い分けの判断基準はシンプルです。</p>



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



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



<p>実務で一番使うのは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>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>小文字の「a」を検索しても、大文字の「A」にはヒットしません。エラーにはなりません。元テキストがそのまま返るだけなので、「置換できていない」事故に気づきにくいのです。</p>



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



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



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



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



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



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



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



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



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



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



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



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



<p>まずはハイフンやスペースの削除から試してみてください。慣れてきたらネストで複数文字の一括置換に挑戦して、データクリーニングの幅を広げていきましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-substitute-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Excelで列番号をアルファベットに変換する方法｜COLUMN・ADDRESS・SUBSTITUTEの組み合わせ技</title>
		<link>https://mashukabu.com/excel-function-howto-get-column-alphabet/</link>
					<comments>https://mashukabu.com/excel-function-howto-get-column-alphabet/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 16 Jul 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[ADDRESS関数]]></category>
		<category><![CDATA[COLUMN関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[列番号変換]]></category>
		<category><![CDATA[関数の組み合わせ]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2104</guid>

					<description><![CDATA[Excelで列番号をアルファベット（列名）に変換する数式を解説します。COLUMN・ADDRESS・SUBSTITUTEの3関数を組み合わせたコピペ用数式を、仕組みからステップごとに丁寧に説明。VBAでの実装例・よくあるエラー対処・実務応用パターンも紹介します。]]></description>
										<content:encoded><![CDATA[
<p>Excelで「この列って何列目？」はCOLUMN関数ですぐわかります。でも「列番号をアルファベットに変換したい」となると、専用の関数がないので困りますよね。</p>



<p>たとえば、マクロで列を動的に指定したいとき、数式内で列名を文字列として扱いたいとき、表ヘッダーを自動生成したいとき。こういった場面で「列番号 → A, B, AA&#8230;」の変換が必要になります。</p>



<p>実はCOLUMN・ADDRESS・SUBSTITUTEの3つを組み合わせれば、たった1行の数式で列のアルファベットを取得できます。この記事ではコピペで使える数式から仕組みの解説、実務での応用パターン、VBAでの実装まで幅広く解説します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-7" checked><label class="toc-title" for="toc-checkbox-7">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">コピペで使える数式2パターン</a><ol><li><a href="#toc2" tabindex="0">パターン1：数式を入力したセルの列を取得する</a></li><li><a href="#toc3" tabindex="0">パターン2：列番号を指定して変換する</a></li></ol></li><li><a href="#toc4" tabindex="0">数式の仕組みをステップごとに解説</a><ol><li><a href="#toc5" tabindex="0">ステップ1：COLUMN関数で列番号を取得する</a></li><li><a href="#toc6" tabindex="0">ステップ2：ADDRESS関数でセル番地を作る</a></li><li><a href="#toc7" tabindex="0">ステップ3：SUBSTITUTE関数で行番号を取り除く</a></li></ol></li><li><a href="#toc8" tabindex="0">実務で使える応用パターン</a><ol><li><a href="#toc9" tabindex="0">パターン1：別のセルの列アルファベットを取得する</a></li><li><a href="#toc10" tabindex="0">パターン2：連番の列アルファベット一覧を作る</a></li><li><a href="#toc11" tabindex="0">パターン3：見出し行と組み合わせて列名を自動表示する</a></li><li><a href="#toc12" tabindex="0">パターン4：INDIRECTと組み合わせてセル範囲を動的に指定する</a></li><li><a href="#toc13" tabindex="0">パターン5：MATCH関数と組み合わせて列名を逆引きする</a></li></ol></li><li><a href="#toc14" tabindex="0">VBAで列番号をアルファベットに変換する</a></li><li><a href="#toc15" tabindex="0">よくあるミスと対処法</a><ol><li><a href="#toc16" tabindex="0">行番号にROW()を使うと誤置換が起きることがある</a></li><li><a href="#toc17" tabindex="0">#VALUE!エラーが出る場合</a></li><li><a href="#toc18" tabindex="0">列番号に0以下を指定した場合</a></li><li><a href="#toc19" tabindex="0">結果が数値になっている場合</a></li></ol></li><li><a href="#toc20" tabindex="0">使用する3つの関数の役割まとめ</a></li><li><a href="#toc21" tabindex="0">よくある質問（FAQ）</a></li><li><a href="#toc22" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">コピペで使える数式2パターン</span></h2>



<p>まず結論から。すぐに使える数式はこちらです。</p>



<h3 class="wp-block-heading"><span id="toc2">パターン1：数式を入力したセルの列を取得する</span></h3>



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



<p>数式を入力したセルの列アルファベットを返します。たとえばD列のセルに入力すると「D」、AN列なら「AN」が返ります。</p>



<h3 class="wp-block-heading"><span id="toc3">パターン2：列番号を指定して変換する</span></h3>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1,列番号,4),1,&quot;&quot;)</code></pre>



<p>列番号を直接指定するパターンです。たとえば <code>=SUBSTITUTE(ADDRESS(1,40,4),1,"")</code> と書くと40列目の「AN」が返ります。</p>



<p>セル参照で列番号を渡すこともできます。A1セルに列番号が入っている場合は次のようにします。</p>



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



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong><br>行番号は「1」に固定するのがポイントです。理由はこの記事の「よくあるミスと対処法」で説明しますね。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc4">数式の仕組みをステップごとに解説</span></h2>



<p>一見むずかしそうに見えますが、やっていることはシンプルです。3つの関数がそれぞれ1つずつ役割を担当しています。</p>



<h3 class="wp-block-heading"><span id="toc5">ステップ1：COLUMN関数で列番号を取得する</span></h3>



<p><a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a>は、セルの列番号を数値で返す関数です。</p>



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



<p>D列のセルで実行すると「4」が返ります。引数を省略すると、数式を入力したセル自身の列番号になりますよ。</p>



<p>特定のセルを参照させるときは <code>=COLUMN(G5)</code> のように書きます。G5のG列は7列目なので「7」が返ります。</p>



<h3 class="wp-block-heading"><span id="toc6">ステップ2：ADDRESS関数でセル番地を作る</span></h3>



<p>次に<a href="https://mashukabu.com/excel-function-howto-use-address/">ADDRESS関数</a>を使って、列番号からセル番地の文字列を組み立てます。</p>



<pre class="wp-block-code"><code>=ADDRESS(1, 4, 4)</code></pre>



<p>この数式は「1行目・4列目・相対参照」を意味します。結果は文字列「D1」です。</p>



<p>ADDRESS関数の引数は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>意味</th><th>この数式での値</th></tr></thead><tbody><tr><td>行番号</td><td>セル番地の行</td><td>1（固定）</td></tr><tr><td>列番号</td><td>セル番地の列</td><td>COLUMN()の結果</td></tr><tr><td>参照の型</td><td>$記号の有無</td><td>4（相対参照＝$なし）</td></tr></tbody></table></figure>



<p>第3引数を「4」にするのがポイントです。「$D$1」のように$記号が付くと、あとで行番号だけを取り除くのが面倒になります。「4」を指定すれば「D1」のようにシンプルな形で返ってきますよ。</p>



<h3 class="wp-block-heading"><span id="toc7">ステップ3：SUBSTITUTE関数で行番号を取り除く</span></h3>



<p>最後に<a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>で、セル番地から行番号部分を空文字に置換します。</p>



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



<p>「D1」から「1」を取り除いて「D」だけが残る、という仕組みです。</p>



<p>これら3つのステップをまとめると、冒頭の数式になります。</p>



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



<p>COLUMN()→ADDRESS()→SUBSTITUTE()の順にデータが流れていくイメージですね。</p>



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



<p>基本の数式がわかったところで、実務で役立つ応用パターンを5つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc9">パターン1：別のセルの列アルファベットを取得する</span></h3>



<p>特定のセルの列アルファベットを知りたい場合は、COLUMN関数に参照を渡します。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1,COLUMN(G5),4),1,&quot;&quot;)</code></pre>



<p>G5セルの列番号（7）をCOLUMN関数が返し、結果は「G」になります。</p>



<h3 class="wp-block-heading"><span id="toc10">パターン2：連番の列アルファベット一覧を作る</span></h3>



<p>A1セルに「1」、A2に「2」&#8230;と列番号を並べておき、B列に次の数式を入れます。</p>



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



<p>下方向にコピーすれば、列番号に対応するアルファベットの一覧表が完成します。26列目まで入れればA〜Z、27列目以降はAA、AB&#8230;と2文字の列名も正しく返ってきますよ。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン3：見出し行と組み合わせて列名を自動表示する</span></h3>



<p>データの1行目に項目名がある表で、「何列目が何の項目か」を確認したいケースです。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,&quot;&quot;) &amp; &quot;列: &quot; &amp; B1</code></pre>



<p>B1セルの上に配置すれば「B列: 売上」のように、列アルファベットと項目名をまとめて表示できます。</p>



<h3 class="wp-block-heading"><span id="toc12">パターン4：INDIRECTと組み合わせてセル範囲を動的に指定する</span></h3>



<p><a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>と組み合わせると、列アルファベットを使ってセル範囲を文字列で組み立て、動的に参照できます。</p>



<pre class="wp-block-code"><code>=SUM(INDIRECT(SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,&quot;&quot;) &amp; &quot;2:&quot; &amp; SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,&quot;&quot;) &amp; &quot;100&quot;))</code></pre>



<p>この数式は「数式を入力した列の2〜100行目を合計する」という意味です。列を増やしてもコピーするだけで自動的に集計列が切り替わるため、動的な集計表を作るときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン5：MATCH関数と組み合わせて列名を逆引きする</span></h3>



<p>特定の見出し名が何列目にあるかを<a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数</a>で調べ、その列名を取得するパターンです。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1,MATCH(&quot;売上&quot;,1:1,0),4),1,&quot;&quot;)</code></pre>



<p>1行目から「売上」という見出しを探し、その列アルファベットを返します。列の順番が変わっても自動追従するので、ダイナミックな表操作に使えます。</p>



<h2 class="wp-block-heading"><span id="toc14">VBAで列番号をアルファベットに変換する</span></h2>



<p>マクロを使う場合は、<code>Cells(1, 列番号).Address(False, False)</code> で取得できます。</p>



<pre class="wp-block-code"><code>Sub GetColumnLetter()
    Dim colNum As Long
    Dim colLetter As String
    
    colNum = 5  ' E列を取得したい場合
    colLetter = Left(Cells(1, colNum).Address(False, False), _
                    Len(Cells(1, colNum).Address(False, False)) - 1)
    
    MsgBox colLetter  ' &quot;E&quot; と表示される
End Sub</code></pre>



<p><code>Cells(1, 列番号).Address(False, False)</code> は「行=相対参照、列=相対参照」のセル番地（例: E1）を返します。そこから行番号の「1」を除けば列アルファベットだけが取れます。</p>



<p>もっとシンプルな方法として、Split関数を使う書き方もあります。</p>



<pre class="wp-block-code"><code>Function ColNumToLetter(colNum As Long) As String
    ColNumToLetter = Split(Cells(1, colNum).Address(True, False), &quot;$&quot;)(0)
End Function</code></pre>



<p>この関数はコードの中で <code>ColNumToLetter(5)</code> のように呼び出せばいつでも使えます。</p>



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



<h3 class="wp-block-heading"><span id="toc16">行番号にROW()を使うと誤置換が起きることがある</span></h3>



<p>旧バージョンの数式 <code>=SUBSTITUTE(ADDRESS(ROW(),COLUMN(),4),ROW(),"")</code> には落とし穴があります。</p>



<p>たとえば11行目のA列で実行してみましょう。ADDRESS関数は「A11」を返します。ここでSUBSTITUTEが「11」を空文字に置換すると、結果は「A」で正しく動きます。</p>



<p>しかし問題が起きるケースがあります。行番号が変わるたびに置換対象の数値が変わるため、アルファベット部分に同じ数値が含まれる列では誤置換が起きる可能性があります。</p>



<p><strong>行番号を「1」に固定しておけば、こうした心配は一切不要です。</strong></p>



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



<p>行番号1なら、末尾の「1」を消すだけで確実にアルファベットだけが残りますよ。</p>



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



<p>COLUMN関数に無効な参照を渡すと<code>#VALUE!</code>エラーになることがあります。引数を省略するか、有効なセル参照を指定しているか確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc18">列番号に0以下を指定した場合</span></h3>



<p>ADDRESS関数の列番号に0以下の値を渡すと<code>#VALUE!</code>エラーになります。列番号は1以上の整数を指定しましょう。</p>



<h3 class="wp-block-heading"><span id="toc19">結果が数値になっている場合</span></h3>



<p>数式バー上では正しく見えるのに、セルに数値が表示されている場合は、セルの書式設定が「数値」になっていることがあります。書式を「標準」か「文字列」に変更してください。</p>



<h2 class="wp-block-heading"><span id="toc20">使用する3つの関数の役割まとめ</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>役割</th><th>この数式での使い方</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a></td><td>列番号を取得</td><td>セルの列を数値で返す</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-address/">ADDRESS関数</a></td><td>セル番地を文字列で生成</td><td>行番号1＋列番号→「A1」形式の文字列</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a></td><td>文字列を置換</td><td>セル番地から行番号「1」を除去</td></tr></tbody></table></figure>



<p>データの流れは <strong>列番号（数値）→ セル番地（文字列）→ アルファベットのみ（文字列）</strong> です。</p>



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



<p><strong>Q. XFD列（16,384列目）など、3文字の列名でも動きますか？</strong></p>



<p>動きます。<code>=SUBSTITUTE(ADDRESS(1,16384,4),1,"")</code> を試すと「XFD」が返ります。Excelの最大列（XFD）まで正しく変換できますよ。</p>



<p><strong>Q. Googleスプレッドシートでも同じ数式が使えますか？</strong></p>



<p>使えます。COLUMN・ADDRESS・SUBSTITUTE関数はスプレッドシートにも同名で存在するため、まったく同じ数式が動きます。</p>



<p><strong>Q. 逆変換（アルファベット → 列番号）はできますか？</strong></p>



<p>できます。<code>=COLUMN(INDIRECT(アルファベット & "1"))</code> の形で、任意のアルファベットから列番号を取得できます。たとえば <code>=COLUMN(INDIRECT("D1"))</code> で「4」が返ります。<a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>と組み合わせるのがシンプルですよ。</p>



<p><strong>Q. CELL関数では取得できないのですか？</strong></p>



<p><code>=CELL("address", A1)</code> で「$A$1」のような絶対参照の文字列は取れますが、列アルファベットだけを取り出すにはさらにSUBSTITUTEやLEFT関数で加工が必要です。SUBSTITUTE(ADDRESS(&#8230;))の数式のほうがシンプルに書けますよ。</p>



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



<p>Excelで列番号をアルファベットに変換する数式は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>数式</th></tr></thead><tbody><tr><td>自セルの列を取得</td><td><code>=SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,"")</code></td></tr><tr><td>列番号を指定して変換</td><td><code>=SUBSTITUTE(ADDRESS(1,列番号,4),1,"")</code></td></tr><tr><td>別セルの列を取得</td><td><code>=SUBSTITUTE(ADDRESS(1,COLUMN(セル),4),1,"")</code></td></tr></tbody></table></figure>



<p>ポイントは3つの関数の役割分担です。<a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a>で列番号を取得し、<a href="https://mashukabu.com/excel-function-howto-use-address/">ADDRESS関数</a>でセル番地の文字列を作り、<a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>で行番号を除去します。行番号は「1」に固定しておくのが安全ですよ。</p>



<p><a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数</a>との組み合わせでさらに柔軟な使い方もできます。列名の動的参照が必要になった場面で、ぜひ活用してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-get-column-alphabet/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>セルの中に混ざったハイフンやスペースを一括で取り除きたい。そんなとき、手作業で一つずつ修正するのは大変ですよね。SUBSTITUTE関数を使えば、指定した文字列を別の文字列にまとめて置き換えられます。この記事では基本の書き方から実務で使える置換パターンまで、まとめて紹介します。</p>



<p>この記事は次のような人におすすめ</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-8" checked><label class="toc-title" for="toc-checkbox-8">目次</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>SUBSTITUTE（サブスティチュート）関数は、文字列の中から指定した文字を検索し、別の文字に置き換える関数です。英語の「substitute」は「代わりに置く」という意味で、まさに文字列の差し替え専用の関数です。</p>



<p>たとえば「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>セルA1に「Excelは事務職に必須のツールです」と入っている場合に、「Excel」を「エクセル」に置き換えてみます。</p>



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



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



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



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



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



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



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



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



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



<p>結果は「りんご・みかん・バナナ」です。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>CSVや外部システムから取り込んだデータには、余分なハイフンやスペースが混ざりがちです。SUBSTITUTE関数で一括除去できます。</p>



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



<p>郵便番号の「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>セル内改行は目に見えない文字（文字コード10）なので、直接入力できません。CHAR関数と組み合わせて削除します。</p>



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



<p>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>改行を半角スペースに置き換えたうえで、残りの制御文字もCLEAN関数で除去するパターンです。</p>



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



<p>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>この数式は、ハイフン → 半角スペース → 全角スペースの順番に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>表記ゆれを統一する場面でも活躍します。</p>



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



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



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



<p>文字列を置き換える関数には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>「この文字を消したい・変えたい」ならSUBSTITUTE関数です。「何文字目から何文字を変えたい」ならREPLACE関数と覚えておくとスムーズです。</p>



<p>なお、文字列の位置を取得する関数としては<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>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>SUBSTITUTE関数は「セルの中の特定の文字を別の文字に置き換える」ための関数です。</p>



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



<p>ハイフン除去・改行削除・表記統一など、実務のデータ整形で幅広く使える関数です。ぜひ活用してみてください。</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>Excel関数の一覧は下記の記事で確認できます。</p>



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



<p>エラー値が表示される場合は、下記の記事も参考にしてみてください。</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>
		<item>
		<title>ExcelのLEN関数の使い方｜文字数カウントと実務活用テクニック</title>
		<link>https://mashukabu.com/excel-function-howto-use-len/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-len/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 21 Mar 2022 12:25:22 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[LENB関数]]></category>
		<category><![CDATA[LEN関数]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[文字列関数]]></category>
		<category><![CDATA[文字数カウント]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=1399</guid>

					<description><![CDATA[ExcelのLEN関数で文字数をカウントする方法を基本から実務まで解説。LENB関数との違い、SUBSTITUTE+LENで特定文字の出現回数カウント、TRIM・ASC・JIS関数との組み合わせによるデータクレンジングなど、実践パターンを紹介します。]]></description>
										<content:encoded><![CDATA[
<p>Excelで「この列のデータ、何文字入っているんだろう？」と気になる場面はありませんか。入力フォームの文字数チェック、SNS投稿文の長さ確認、データベースに登録する前の桁数チェックなど、文字数を数えたいシーンは意外と多いですよね。LEN関数を使えば、セルの中の文字数を一瞬でカウントできます。この記事ではLEN関数の基本から、LENB関数との違い、SUBSTITUTE・TRIM・ASC/JIS関数と組み合わせた実務テクニックまで、まとめて解説します。</p>



<p>この記事は次のような人におすすめ</p>



<ul class="wp-block-list"><li>セルの中身が何文字あるか手軽に調べたい</li><li>LEN関数とLENB関数の違いがよく分からない</li><li>特定の文字が何回出現するかカウントしたい</li><li>全角・半角が混在するデータを整理したい</li></ul>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-9" checked><label class="toc-title" for="toc-checkbox-9">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">LEN関数とは？書き方と基本ルール</a><ol><li><a href="#toc2" tabindex="0">LEN関数の読み方と語源</a></li><li><a href="#toc3" tabindex="0">基本構文と引数</a></li></ol></li><li><a href="#toc4" tabindex="0">LEN関数の基本的な使い方</a><ol><li><a href="#toc5" tabindex="0">セル参照で文字数を数える</a></li><li><a href="#toc6" tabindex="0">数値の桁数を数える</a></li><li><a href="#toc7" tabindex="0">スペース・改行もカウントされる</a></li></ol></li><li><a href="#toc8" tabindex="0">LEN関数とLENB関数の違い</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">LEN関数の実務活用パターン</a><ol><li><a href="#toc12" tabindex="0">IF+LENで文字数制限をチェック</a></li><li><a href="#toc13" tabindex="0">SUBSTITUTE+LENで特定文字の出現回数をカウント</a></li><li><a href="#toc14" tabindex="0">TRIM+LENで余分なスペースを検出</a></li><li><a href="#toc15" tabindex="0">ASC/JIS+LENで全角・半角の統一チェック</a></li><li><a href="#toc16" tabindex="0">SUMPRODUCT+LENで複数セルの合計文字数を取得</a></li><li><a href="#toc17" tabindex="0">CLEAN+TRIM+LENでデータクレンジング判定</a></li></ol></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><li><a href="#toc21" tabindex="0">まとめ</a><ol><li><a href="#toc22" tabindex="0">この記事で紹介した関数・関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">LEN関数とは？書き方と基本ルール</span></h2>



<p>LEN関数は、テキスト文字列に含まれる文字数を返す関数です。セルに入力された文字の数をそのまま数値で教えてくれます。</p>



<p>たとえばセルに「Excel関数」と入っていれば、LEN関数は「7」を返します。半角でも全角でも、1文字は1文字としてカウントされるのがポイントです。</p>



<h3 class="wp-block-heading"><span id="toc2">LEN関数の読み方と語源</span></h3>



<p>LEN関数は「レン」と読みます。英語の「Length（レングス＝長さ）」の略で、文字列の「長さ」を返す関数という意味です。すべてのExcelバージョン（Excel 2016以前、Microsoft 365含む）で同じ書き方で使えますよ。</p>



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



<pre class="wp-block-code"><code>=LEN(文字列)</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></tbody></table></figure>



<p>引数は1つだけなので、とてもシンプルです。セル参照のほか、<code>=LEN("テスト")</code> のように文字列を直接指定することもできますよ。</p>



<p>なお、引数に空のセル（空白セル）を渡すと「0」が返ります。エラーにはならないので安心してください。文字列を直接指定する場合はダブルクォーテーションで囲みます。<code>=LEN("Excel")</code> と書けば「5」が返りますよ。</p>



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



<h3 class="wp-block-heading"><span id="toc5">セル参照で文字数を数える</span></h3>



<p>セルA1に「Excel関数」と入っている場合に、文字数を数えてみます。</p>



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



<p>結果は「7」です。半角の「Excel」が5文字、全角の「関数」が2文字で、合計7文字になります。LEN関数では半角も全角も同じ1文字としてカウントされます。</p>



<h3 class="wp-block-heading"><span id="toc6">数値の桁数を数える</span></h3>



<p>LEN関数は数値にも使えます。セルA1に「12345」と入っている場合、こう書きます。</p>



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



<p>結果は「5」です。数値は文字列として扱われ、桁数がそのまま返ります。</p>



<p>ただし日付セルには注意が必要です。日付はExcel内部でシリアル値（例: 46102）として管理されています。そのため <code>=LEN(A1)</code> はシリアル値の桁数を返します。日付の文字数を数えたいときは、<a href="https://mashukabu.com/excel-function-howto-use-text/">TEXT関数</a>で表示形式を指定してからLENに渡してください。</p>



<pre class="wp-block-code"><code>=LEN(TEXT(A1,&quot;yyyy/mm/dd&quot;))</code></pre>



<p>この数式なら「2026/04/03」の10文字が返りますよ。</p>



<h3 class="wp-block-heading"><span id="toc7">スペース・改行もカウントされる</span></h3>



<p>LEN関数はスペースや改行も1文字としてカウントします。</p>



<figure class="wp-block-table"><table><thead><tr><th>セルの内容</th><th>数式</th><th>結果</th><th>説明</th></tr></thead><tbody><tr><td><code>Excel 関数</code></td><td><code>=LEN(A1)</code></td><td>8</td><td>半角スペース1つを含む</td></tr><tr><td><code>A B C</code></td><td><code>=LEN(A2)</code></td><td>5</td><td>半角スペース2つを含む</td></tr><tr><td><code>テスト</code>＋改行＋<code>です</code></td><td><code>=LEN(A3)</code></td><td>6</td><td>改行（Alt+Enter）も1文字</td></tr></tbody></table></figure>



<p>「文字数が合わない」と感じたときは、スペースや改行が混入していないか確認してみてください。</p>



<h2 class="wp-block-heading"><span id="toc8">LEN関数とLENB関数の違い</span></h2>



<p>LEN関数とセットで覚えたいのがLENB関数です。2つの関数は文字の数え方が根本的に異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>カウント方法</th><th>全角1文字</th><th>半角1文字</th></tr></thead><tbody><tr><td>LEN</td><td>文字数</td><td>1</td><td>1</td></tr><tr><td>LENB</td><td>バイト数</td><td>2</td><td>1</td></tr></tbody></table></figure>



<p>LEN関数は「何文字あるか」を数えます。全角でも半角でも1文字は1文字です。一方、LENB関数は「何バイトあるか」を数えます。日本語環境では全角文字が2バイト、半角文字が1バイトとして扱われます。</p>



<h3 class="wp-block-heading"><span id="toc9">具体例で比較</span></h3>



<p>実際のデータでLENとLENBの結果を比べてみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>セルの内容</th><th>LEN</th><th>LENB</th><th>説明</th></tr></thead><tbody><tr><td><code>ABC</code></td><td>3</td><td>3</td><td>半角のみ → LENとLENBは同じ</td></tr><tr><td><code>あいう</code></td><td>3</td><td>6</td><td>全角のみ → LENBは2倍</td></tr><tr><td><code>ABCあいう</code></td><td>6</td><td>9</td><td>混在 → 半角3バイト＋全角6バイト</td></tr><tr><td><code>Excel関数</code></td><td>7</td><td>9</td><td>半角5バイト＋全角4バイト</td></tr></tbody></table></figure>



<p>半角だけのデータなら結果は同じですが、全角が混ざるとLENBのほうが大きな数値になりますね。</p>



<h3 class="wp-block-heading"><span id="toc10">どちらを使うべきか</span></h3>



<p>通常の文字数カウントにはLEN関数で十分です。LENB関数が必要になるのは、次のような場面に限られます。</p>



<ul class="wp-block-list"><li>入力値をバイト数で管理しているシステムへのデータ登録前チェック</li><li>固定長ファイル（CSVやフラットファイル）のフィールド幅管理</li><li>データベースのカラム定義がバイト数指定の場合</li></ul>



<p>LENB関数の実用的な使い方として、バイト数制限のチェックがあります。たとえば「20バイト以内」という制限がある場合は次のように書けます。</p>



<pre class="wp-block-code"><code>=IF(LENB(A1)&gt;20,&quot;超過&quot;,&quot;OK&quot;)</code></pre>



<p>なおMicrosoft公式ドキュメントでは、LENB関数に「非推奨」の記載があります。現在も問題なく動作しますが、新しい関数で代替できる場合はLEN関数を使うほうが安全ですよ。</p>



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



<p>LEN関数は単体でも便利ですが、他の文字列操作関数と組み合わせるとさらに活躍の場が広がります。実務でよく使うパターンを紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc12">IF+LENで文字数制限をチェック</span></h3>



<p>入力フォームやSNS投稿文の文字数上限をチェックする場面で便利です。<a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数</a>と組み合わせて、20文字を超えたら「超過」と表示してみます。</p>



<pre class="wp-block-code"><code>=IF(LEN(A1)&gt;20,&quot;超過&quot;,&quot;OK&quot;)</code></pre>



<p>A1が「商品名がここに入ります」（12文字）なら「OK」、「この商品名はとても長い名前で文字数を超過しています」（24文字）なら「超過」が返ります。商品名やタイトルの入力チェックに使えますよ。</p>



<p>さらに、何文字オーバーしているか表示したいときは、こう書きます。</p>



<pre class="wp-block-code"><code>=IF(LEN(A1)&gt;20,LEN(A1)-20&amp;&quot;文字超過&quot;,&quot;OK&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc13">SUBSTITUTE+LENで特定文字の出現回数をカウント</span></h3>



<p>「この文章に読点がいくつあるか知りたい」というとき、<a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>とLEN関数を組み合わせるとカウントできます。</p>



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



<p>しくみはシンプルです。元の文字数から「、」を削除した後の文字数を引くと、削除された「、」の数＝出現回数が分かります。</p>



<figure class="wp-block-table"><table><thead><tr><th>セルの内容</th><th>数式</th><th>結果</th></tr></thead><tbody><tr><td><code>Excel、Word、PowerPoint</code></td><td><code>=LEN(A1)-LEN(SUBSTITUTE(A1,"、",""))</code></td><td>2</td></tr><tr><td><code>りんご、みかん</code></td><td><code>=LEN(A2)-LEN(SUBSTITUTE(A2,"、",""))</code></td><td>1</td></tr></tbody></table></figure>



<p>この考え方を応用すれば、カンマ・スペース・改行など任意の文字の出現回数をカウントできます。<a href="https://mashukabu.com/excel-function-howto-use-countif/">COUNTIF関数</a>ではセル単位のカウントしかできませんが、この方法ならセル内の文字を数えられるのがポイントです。</p>



<p>2文字以上の文字列の出現回数を数えたい場合は、少し工夫が必要です。</p>



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



<p>SUBSTITUTE後の差分をカウント対象の文字数で割ることで、正しい出現回数が返ります。</p>



<h3 class="wp-block-heading"><span id="toc14">TRIM+LENで余分なスペースを検出</span></h3>



<p>データの中に余分なスペースが混ざっているかどうかを検出できます。<a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>で余分なスペースを除去した文字数と元の文字数を比較します。</p>



<pre class="wp-block-code"><code>=IF(LEN(A1)&lt;&gt;LEN(TRIM(A1)),&quot;スペースあり&quot;,&quot;OK&quot;)</code></pre>



<p>LEN(A1)とLEN(TRIM(A1))の結果が異なれば、前後や途中に余分なスペースが含まれている証拠です。データクレンジングの前に問題のあるセルを特定するのに役立ちますよ。</p>



<p>さらに、余分なスペースが何文字あるか知りたいときは次のように書きます。</p>



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



<p>この結果が0より大きければクレンジング対象です。大量のデータを扱う前に、この数式でフィルターをかけて問題行を洗い出すと効率的です。</p>



<h3 class="wp-block-heading"><span id="toc15">ASC/JIS+LENで全角・半角の統一チェック</span></h3>



<p>データ入力のばらつきを検出するとき、<a href="https://mashukabu.com/excel-function-howto-use-asc/">ASC関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数</a>とLEN・LENBの組み合わせが役立ちます。</p>



<p>全角文字が含まれているかどうかの判定は、LENとLENBの差分で分かります。</p>



<pre class="wp-block-code"><code>=IF(LEN(A1)=LENB(A1),&quot;半角のみ&quot;,&quot;全角あり&quot;)</code></pre>



<p>LEN関数では全角も半角も1文字ですが、LENB関数では全角は2バイトになります。両者が等しければ半角文字しか含まれていない、ということですね。</p>



<p>さらに全角文字の数を数えたい場合はこう書きます。</p>



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



<p>たとえば「ABCあいう」なら、LENB=9、LEN=6で、差分の3が全角文字の数です。</p>



<p>実務では「英数字は半角に統一したい」というケースがよくあります。ASC関数で半角に変換する前に、変換が必要なセルだけを特定しましょう。</p>



<pre class="wp-block-code"><code>=IF(LEN(A1)&lt;&gt;LEN(ASC(A1)),&quot;半角変換が必要&quot;,&quot;OK&quot;)</code></pre>



<p>ASC関数は全角英数字を半角に変換します。変換前後でLENの結果は変わりませんが、LENB関数で比較すると差分が出ます。ただしLEN関数だけで判定したい場合は、上記のLEN=LENBの方法を使ってください。</p>



<p>逆に「カタカナは全角に統一したい」場合は、JIS関数と同様の考え方で判定できます。</p>



<pre class="wp-block-code"><code>=IF(LENB(A1)&lt;&gt;LENB(JIS(A1)),&quot;全角変換が必要&quot;,&quot;OK&quot;)</code></pre>



<p>JIS関数は半角カタカナを全角に変換するので、変換前後のバイト数が変われば半角カタカナが含まれている証拠です。</p>



<h3 class="wp-block-heading"><span id="toc16">SUMPRODUCT+LENで複数セルの合計文字数を取得</span></h3>



<p>複数セルの文字数を一度に合計したいとき、<a href="https://mashukabu.com/excel-function-howto-use-sumproduct/">SUMPRODUCT関数</a>とLEN関数を組み合わせると便利です。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(LEN(A1:A10))</code></pre>



<p>A1からA10の各セルの文字数をすべて合算した結果が返ります。配列数式（Ctrl+Shift+Enter）は不要で、普通に入力するだけで動きます。アンケートの自由記述欄や、レポートの総文字数を集計するときに使えます。</p>



<h3 class="wp-block-heading"><span id="toc17">CLEAN+TRIM+LENでデータクレンジング判定</span></h3>



<p>外部システムから取り込んだデータには、目に見えない制御文字が紛れ込んでいることがあります。<a href="https://mashukabu.com/excel-function-howto-use-clean/">CLEAN関数</a>とTRIM関数を組み合わせて、クレンジングが必要なセルを一括で判定できます。</p>



<pre class="wp-block-code"><code>=IF(LEN(A1)&lt;&gt;LEN(CLEAN(TRIM(A1))),&quot;要クレンジング&quot;,&quot;OK&quot;)</code></pre>



<p>TRIM関数で余分なスペースを除去し、CLEAN関数で印刷できない制御文字を除去します。それでもLENの結果が元と変わるなら、不要な文字が混入していたということです。</p>



<h2 class="wp-block-heading"><span id="toc18">よくあるエラーと似た関数の使い分け</span></h2>



<p>LEN関数はシンプルな関数なので、エラーになるケースは限られます。よくある落とし穴と、混同しやすい関数をまとめて整理しますね。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>状況</th><th>結果</th><th>対処法</th></tr></thead><tbody><tr><td>引数を省略した</td><td>#VALUE!エラー</td><td>セル参照または文字列を指定する</td></tr><tr><td>エラー値のセルを参照した</td><td>エラーがそのまま伝播</td><td><a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数</a>で囲む</td></tr><tr><td>日付セルを参照した</td><td>シリアル値の桁数が返る</td><td>TEXT関数で表示形式を指定してから渡す</td></tr><tr><td>文字数が想定より多い</td><td>スペースや改行を含んでいる</td><td>TRIM関数やCLEAN関数で前処理する</td></tr></tbody></table></figure>



<p>「文字数が合わない」という問題は、目に見えないスペースや改行が混入していることがほとんどです。TRIM関数で余分なスペースを除去し、CLEAN関数で制御文字を除去してからLEN関数に渡してみてください。</p>



<h3 class="wp-block-heading"><span id="toc20">似た関数との違い・使い分け</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>機能</th><th>使いどころ</th></tr></thead><tbody><tr><td>LEN</td><td>文字数を返す</td><td>文字数カウント全般</td></tr><tr><td>LENB</td><td>バイト数を返す</td><td>全角半角の区別が必要なとき</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-mid/">MID関数</a></td><td>文字列の一部を抽出</td><td>LENと組み合わせて末尾N文字を取得</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a></td><td>文字列を置換</td><td>LENと組み合わせて特定文字の出現回数を数える</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a></td><td>余分なスペースを除去</td><td>LENと組み合わせて不要スペースの検出</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-asc/">ASC関数</a></td><td>全角→半角に変換</td><td>LENBと組み合わせて半角統一チェック</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数</a></td><td>半角→全角に変換</td><td>LENBと組み合わせて全角統一チェック</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-countif/">COUNTIF関数</a></td><td>条件に一致するセルを数える</td><td>セル単位のカウント（セル内の文字カウントはLEN）</td></tr></tbody></table></figure>



<p>特にSUBSTITUTE関数との出現回数カウント、TRIM関数とのスペース検出は実務で頻出なので、セットで覚えておくと便利ですよ。</p>



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



<p>LEN関数は、セルの文字数を数えるシンプルな関数です。引数は文字列1つだけなので、Excel初心者でもすぐに使いこなせます。</p>



<ul class="wp-block-list"><li><strong>基本</strong>: <code>=LEN(A1)</code> でセルの文字数を取得</li><li><strong>LENBとの違い</strong>: LENは文字数、LENBはバイト数。通常はLENで十分</li><li><strong>文字数チェック</strong>: IF関数と組み合わせて入力制限を判定</li><li><strong>特定文字カウント</strong>: SUBSTITUTE関数と組み合わせて出現回数を取得</li><li><strong>全角半角判定</strong>: LENBとの差分、ASC/JIS関数との組み合わせで統一チェック</li><li><strong>データクレンジング</strong>: TRIM・CLEAN関数と組み合わせて問題セルを検出</li></ul>



<p>まずは <code>=LEN(A1)</code> から試して、慣れてきたら実務パターンも活用してみてください。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc22">この記事で紹介した関数・関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数の使い方</a></li><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><li><a href="https://mashukabu.com/excel-function-howto-use-countif/">COUNTIF関数の使い方</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-asc/">ASC関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数の使い方</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-sumproduct/">SUMPRODUCT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-len/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Excelで消えない空白の正体と消し方｜ノーブレークスペース完全対策ガイド</title>
		<link>https://mashukabu.com/about-nbsp/</link>
					<comments>https://mashukabu.com/about-nbsp/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Fri, 11 Mar 2022 14:07:12 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[CHAR関数]]></category>
		<category><![CDATA[CLEAN関数]]></category>
		<category><![CDATA[NBSP]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[TRIM関数]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[VLOOKUP不一致]]></category>
		<category><![CDATA[データ整形]]></category>
		<category><![CDATA[ノーブレークスペース]]></category>
		<category><![CDATA[空白削除]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=1303</guid>

					<description><![CDATA[ExcelでTRIMやReplaceで消せない空白の正体はノーブレークスペース（NBSP）です。原因・見分け方・SUBSTITUTE+CHAR(160)での削除方法・VBAでの一括処理・VLOOKUPの不一致対策まで完全解説します。]]></description>
										<content:encoded><![CDATA[
<p>Webサイトからコピーしたデータに空白が入っていて、TRIM関数で消そうとしたのに消えない。そんな経験はありませんか？</p>



<p>見た目はただのスペースなのに、いつもの方法では消せないのは本当に厄介ですよね。そのまま放置すると、VLOOKUPの不一致や集計ミスの原因になってしまいます。</p>



<p>この記事では、その正体である<strong>ノーブレークスペース（NBSP）</strong> の見分け方から、関数やVBAでの削除方法まで解説します。</p>



<p>この記事は次のような人におすすめ</p>



<ul class="wp-block-list"><li>TRIMやReplaceで消せない空白に困っている</li><li>Webや外部システムから取り込んだデータの整形をしたい</li><li>ノーブレークスペースの原因と対処法をまとめて知りたい</li></ul>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</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">Webサイトからのコピペ</a></li><li><a href="#toc4" tabindex="0">外部システムからのデータ連携</a></li><li><a href="#toc5" tabindex="0">Wordや他のOfficeアプリからの貼り付け</a></li></ol></li><li><a href="#toc6" tabindex="0">ノーブレークスペースの見分け方</a><ol><li><a href="#toc7" tabindex="0">CODE関数で文字コードを確認する</a></li><li><a href="#toc8" tabindex="0">LEN関数とSUBSTITUTE関数で個数を特定する</a></li></ol></li><li><a href="#toc9" tabindex="0">ノーブレークスペースを関数で削除する方法</a><ol><li><a href="#toc10" tabindex="0">パターン1: NBSPだけを削除する</a></li><li><a href="#toc11" tabindex="0">パターン2: NBSPと前後の半角スペースをまとめて削除する</a></li><li><a href="#toc12" tabindex="0">パターン3: 制御文字も含めて一括クレンジングする</a></li><li><a href="#toc13" tabindex="0">パターン4: すべてのスペースを削除する</a></li></ol></li><li><a href="#toc14" tabindex="0">空白の種類と対処関数の早見表</a></li><li><a href="#toc15" tabindex="0">ノーブレークスペースをVBAで削除する方法</a><ol><li><a href="#toc16" tabindex="0">Replace関数でNBSPを削除する</a></li><li><a href="#toc17" tabindex="0">選択範囲のNBSPを一括削除するマクロ</a></li><li><a href="#toc18" tabindex="0">すべての空白を一括削除するマクロ</a></li><li><a href="#toc19" tabindex="0">VBEの起動方法</a></li></ol></li><li><a href="#toc20" tabindex="0">VLOOKUPやCOUNTIFで不一致が起きたときの対処法</a><ol><li><a href="#toc21" tabindex="0">VLOOKUPで一致しないときの確認手順</a></li><li><a href="#toc22" tabindex="0">COUNTIFやSUMIFで集計がずれるとき</a></li></ol></li><li><a href="#toc23" tabindex="0">CSV出力時の文字化け対策</a></li><li><a href="#toc24" tabindex="0">まとめ</a><ol><li><a href="#toc25" tabindex="0">関連記事</a></li><li><a href="#toc26" tabindex="0">関数一覧</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ノーブレークスペースとは？</span></h2>



<p>ノーブレークスペース（Non-Breaking Space、略称: NBSP）は、文字コード <strong>160</strong> の特殊な空白文字です。</p>



<p>通常の半角スペース（文字コード 32）とは別の文字として扱われます。見た目はまったく同じスペースなのに、Excelの関数やVBAの標準的な処理では「空白」として認識されません。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>半角スペース</th><th>ノーブレークスペース</th></tr></thead><tbody><tr><td>文字コード</td><td>32</td><td>160</td></tr><tr><td>HTMLエンティティ</td><td><code> </code></td><td><code>&nbsp;</code></td></tr><tr><td>TRIM関数</td><td>削除できる</td><td>削除できない</td></tr><tr><td>VBA Trim関数</td><td>削除できる</td><td>削除できない</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>NBSPはもともとHTMLで「この位置では改行しない」ことを指定するための文字です。Webページの文字間隔を調整する目的で使われることが多く、Webからデータをコピーすると混入しやすくなっています。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">ノーブレークスペースが混入する原因</span></h2>



<p>NBSPがExcelに入り込む主なルートは次のとおりです。</p>



<h3 class="wp-block-heading"><span id="toc3">Webサイトからのコピペ</span></h3>



<p>最も多い原因がWebサイトからのコピー&#038;ペーストです。HTMLソースに <code>&nbsp;</code> が含まれていると、Excelに貼り付けたときにNBSPとして残ります。</p>



<h3 class="wp-block-heading"><span id="toc4">外部システムからのデータ連携</span></h3>



<p>基幹システムや会計ソフトからCSVやテキストで出力したデータに含まれていることがあります。システム側がNBSPを空白の代わりに使っているケースです。</p>



<h3 class="wp-block-heading"><span id="toc5">Wordや他のOfficeアプリからの貼り付け</span></h3>



<p>Wordで作成した文書をコピーすると、NBSPが混入することがあります。Wordでは <code>Ctrl + Shift + Space</code> で意図的にNBSPを挿入できます。知らずに入力されている場合もあるので注意が必要です。</p>



<h2 class="wp-block-heading"><span id="toc6">ノーブレークスペースの見分け方</span></h2>



<p>NBSPは見た目では普通のスペースと区別できません。「空白があるのに消せない」と感じたら、次の方法で確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc7">CODE関数で文字コードを確認する</span></h3>



<p>セルの先頭文字を調べるには、次の数式を使います。</p>



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



<p>結果が <strong>160</strong> であればNBSPです。通常の半角スペースなら <strong>32</strong> が返ります。</p>



<p>途中に隠れている場合は、<a href="https://mashukabu.com/excel-function-howto-use-len/">LEN関数</a>で文字数を数えてみてください。見た目の文字数とLEN関数の結果がずれていたら、見えない文字が混入しています。</p>



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



<h3 class="wp-block-heading"><span id="toc8">LEN関数とSUBSTITUTE関数で個数を特定する</span></h3>



<p>NBSPが何個含まれているかを数えるには、次の数式が便利です。</p>



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



<p><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>でNBSPを削除した文字列のLENと比較することで、NBSP文字数がわかります。</p>



<h2 class="wp-block-heading"><span id="toc9">ノーブレークスペースを関数で削除する方法</span></h2>



<p>見分け方がわかったら、実際に削除してみましょう。ここでは用途別に4つの関数パターンを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc10">パターン1: NBSPだけを削除する</span></h3>



<p>最もシンプルな方法です。<a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>と<a href="https://mashukabu.com/excel-function-howto-use-char/">CHAR関数</a>を組み合わせます。</p>



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



<p>CHAR(160) がNBSPを指定しています。これを空文字 <code>""</code> に置き換えることで削除できます。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン2: NBSPと前後の半角スペースをまとめて削除する</span></h3>



<p>外部データには、NBSPと通常のスペースが両方入っていることがよくあります。<a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>も組み合わせると、まとめてきれいにできます。</p>



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



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>ここでのポイントは、NBSPを <strong>空文字ではなく半角スペースに置換</strong> している点です。NBSPを半角スペースに変換してからTRIM関数で処理すると、前後の空白除去と連続スペースの圧縮が同時に行えます。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc12">パターン3: 制御文字も含めて一括クレンジングする</span></h3>



<p>Webデータには改行コードやタブなどの制御文字が混じることもあります。<a href="https://mashukabu.com/excel-function-howto-use-clean/">CLEAN関数</a>を加えると、印刷できない制御文字もまとめて削除できます。</p>



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



<p>処理の流れはこうなっています。</p>



<ol class="wp-block-list"><li>SUBSTITUTE: NBSPを半角スペースに変換</li><li>CLEAN: 制御文字（文字コード 0〜31）を削除</li><li>TRIM: 前後のスペース削除 + 連続スペースの圧縮</li></ol>



<h3 class="wp-block-heading"><span id="toc13">パターン4: すべてのスペースを削除する</span></h3>



<p>全角スペース・半角スペース・NBSPをすべて削除したい場合は、SUBSTITUTE関数をネストします。</p>



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



<p>ちょっと長く見えますが、やっていることはシンプルです。内側から順に「制御文字の削除 → NBSPの削除 → 半角スペースの削除 → 全角スペースの削除」と処理しています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>すべてのスペースを消してしまうと、姓名間のスペースなど必要な空白まで消えてしまいます。用途に応じてパターン1〜3を使い分けてください。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc14">空白の種類と対処関数の早見表</span></h2>



<p>Excelで遭遇する「消せない空白」はNBSPだけではありません。まとめて整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>空白の種類</th><th>文字コード</th><th>原因</th><th>対処方法</th></tr></thead><tbody><tr><td>半角スペース</td><td>32</td><td>手入力・システム出力</td><td><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a></td></tr><tr><td>全角スペース</td><td>12288</td><td>日本語入力</td><td><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>で <code>"　"</code> を置換</td></tr><tr><td>NBSP</td><td>160</td><td>Webコピー・Word貼付</td><td><code>SUBSTITUTE(A1,CHAR(160),"")</code></td></tr><tr><td>タブ文字</td><td>9</td><td>テキストファイル取込</td><td><code>SUBSTITUTE(A1,CHAR(9),"")</code></td></tr><tr><td>改行（LF）</td><td>10</td><td>Alt+Enter・CSV</td><td><code>SUBSTITUTE(A1,CHAR(10),"")</code></td></tr><tr><td>改行（CR）</td><td>13</td><td>Mac系データ</td><td><code>SUBSTITUTE(A1,CHAR(13),"")</code></td></tr><tr><td>制御文字全般</td><td>0〜31</td><td>システム出力</td><td><a href="https://mashukabu.com/excel-function-howto-use-clean/">CLEAN関数</a></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(MID(A1,N,1))</code> で1文字ずつ文字コードを確認するのが確実です。Nに位置番号を入れて調べてみてください。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc15">ノーブレークスペースをVBAで削除する方法</span></h2>



<p>大量のデータを処理する場合は、VBAを使うと効率的です。VBAでの空白削除の基本は<a href="https://mashukabu.com/excel-vba-howto-remove-space/">VBA 文字列の空白を削除する方法まとめ</a>でまとめていますが、ここではNBSPに特化した方法を紹介します。</p>



<h3 class="wp-block-heading"><span id="toc16">Replace関数でNBSPを削除する</span></h3>



<p>VBAでは <code>ChrW(160)</code> でNBSPを指定できます。</p>



<pre class="wp-block-code"><code>'--- NBSPを削除する基本コード ---
Dim sBefore As String '変換前の文字列
Dim sAfter As String  '変換後の文字列

sBefore = Range(&quot;A1&quot;).Value
sAfter = Replace(sBefore, ChrW(160), &quot;&quot;)

MsgBox &quot;[&quot; &amp; sBefore &amp; &quot;] → [&quot; &amp; sAfter &amp; &quot;]&quot;</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p><code>ChrW</code> はUnicodeの文字コードに対応した関数です。<code>Chr</code> 関数でも160を指定できますが、環境によっては正しく動作しないことがあります。確実に処理するには <code>ChrW</code> を使ってください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc17">選択範囲のNBSPを一括削除するマクロ</span></h3>



<p>実務で使いやすい、範囲を選択して一括処理するマクロを紹介します。</p>



<pre class="wp-block-code"><code>Sub NBSPを一括削除()

    Dim rng As Range    '処理対象の範囲
    Dim cell As Range   '各セル

    '--- 範囲を選択するダイアログを表示 ---
    Set rng = Application.InputBox( _
        Prompt:=&quot;NBSPを削除する範囲を選択してください。&quot;, _
        Title:=&quot;範囲選択&quot;, _
        Type:=8)

    '--- 各セルのNBSPを削除 ---
    For Each cell In rng
        If Not IsEmpty(cell) Then
            cell.Value = Replace(cell.Value, ChrW(160), &quot;&quot;)
        End If
    Next cell

    MsgBox &quot;処理が完了しました。&quot;

End Sub</code></pre>



<p>このマクロを実行すると範囲選択のダイアログが表示されます。対象範囲をドラッグで選択すれば、その中のNBSPをまとめて削除できます。</p>



<h3 class="wp-block-heading"><span id="toc18">すべての空白を一括削除するマクロ</span></h3>



<p>NBSPだけでなく、半角・全角スペースやタブ・改行もまとめて削除したい場合は、次のマクロが便利です。</p>



<pre class="wp-block-code"><code>Sub すべての空白を一括削除()

    Dim rng As Range    '処理対象の範囲
    Dim cell As Range   '各セル
    Dim sTemp As String '一時変数

    '--- 範囲を選択するダイアログを表示 ---
    Set rng = Application.InputBox( _
        Prompt:=&quot;空白を削除する範囲を選択してください。&quot;, _
        Title:=&quot;範囲選択&quot;, _
        Type:=8)

    '--- 各セルの空白を削除 ---
    For Each cell In rng
        If Not IsEmpty(cell) Then
            sTemp = cell.Value
            sTemp = Replace(sTemp, ChrW(160), &quot;&quot;) 'NBSP
            sTemp = Replace(sTemp, &quot; &quot;, &quot;&quot;)        '半角スペース
            sTemp = Replace(sTemp, &quot;　&quot;, &quot;&quot;)       '全角スペース
            sTemp = Replace(sTemp, vbCrLf, &quot;&quot;)     '改行(CR+LF)
            sTemp = Replace(sTemp, vbLf, &quot;&quot;)       '改行(LF)
            sTemp = Replace(sTemp, vbTab, &quot;&quot;)      'タブ
            cell.Value = sTemp
        End If
    Next cell

    MsgBox &quot;処理が完了しました。&quot;

End Sub</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>姓名間のスペースなど、残したい空白がある場合はNBSPの行（<code>ChrW(160)</code>）だけ残して他の行をコメントアウトしてください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc19">VBEの起動方法</span></h3>



<p>マクロの実行にはVBE（Visual Basic Editor）を開く必要があります。</p>



<ol class="wp-block-list"><li><code>Alt + F11</code> でVBEを起動する</li><li>リボンから起動する場合: [開発] タブ → [Visual Basic] をクリック</li><li>[開発] タブが表示されていない場合: [ファイル] → [オプション] → [リボンのユーザー設定] → [開発] にチェックを入れて [OK]</li><li>VBEが開いたら [挿入] → [標準モジュール] でモジュールを追加し、コードを貼り付ける</li></ol>



<h2 class="wp-block-heading"><span id="toc20">VLOOKUPやCOUNTIFで不一致が起きたときの対処法</span></h2>



<p>NBSPが原因で最もよく困るのが、VLOOKUPやCOUNTIFの不一致です。検索値にNBSPが混入していると、見た目は同じ文字列でも「別の値」として判定されてしまいます。</p>



<h3 class="wp-block-heading"><span id="toc21">VLOOKUPで一致しないときの確認手順</span></h3>



<p>VLOOKUPで <code>#N/A</code> エラーが出たら、まず検索値と検索範囲の文字コードを比べてみてください。</p>



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



<p>片方が160、もう片方が32であれば、NBSPが原因です。次の数式でNBSPを除去してからVLOOKUPに渡せば解決します。</p>



<pre class="wp-block-code"><code>=VLOOKUP(TRIM(SUBSTITUTE(A1,CHAR(160),&quot; &quot;)),B:C,2,FALSE)</code></pre>



<h3 class="wp-block-heading"><span id="toc22">COUNTIFやSUMIFで集計がずれるとき</span></h3>



<p>COUNTIFやSUMIF（条件に合うセルを数える・合計する関数）でも同じ問題が起きます。条件値にNBSPが含まれていると、一致するはずのセルがカウントされません。</p>



<p>対処法は2つあります。</p>



<ol class="wp-block-list"><li><strong>事前クレンジング</strong>: 前述のパターン2の数式で列全体のNBSPを除去してから集計する</li><li><strong>作業列を追加</strong>: <code>=TRIM(SUBSTITUTE(A1,CHAR(160)," "))</code> の列を作り、その列を集計対象にする</li></ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>「数式は合っているのに結果がおかしい」と感じたら、NBSPを疑ってみてください。特にWebからコピーしたデータや外部システムのCSVデータは要注意です。</p></blockquote>



<p>VBAで空白を一括処理する方法は、<a href="https://mashukabu.com/excel-vba-howto-remove-space/">VBA 文字列の空白を削除する方法まとめ</a>で詳しく解説しています。</p>



<h2 class="wp-block-heading"><span id="toc23">CSV出力時の文字化け対策</span></h2>



<p>NBSPが含まれたセルをCSVで保存すると、文字コード 160 が正しく変換されず「?」に化けることがあります。</p>



<p>CSVで出力する前にNBSPを削除しておくのが確実な対策です。前述の関数パターンやVBAマクロで事前にクレンジングしてから保存してください。</p>



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



<p>TrimやReplaceで消せない空白の正体は、文字コード 160 のノーブレークスペース（NBSP）です。</p>



<ul class="wp-block-list"><li>NBSPはWebコピーや外部システム連携で混入しやすい</li><li>見た目では普通のスペースと区別できない</li><li><code>=CODE(LEFT(A1,1))</code> で文字コードを確認すれば判別できる</li><li>関数では <code>=SUBSTITUTE(A1,CHAR(160),"")</code> で削除できる</li><li>VBAでは <code>Replace(文字列, ChrW(160), "")</code> で削除できる</li><li>TRIM・CLEAN関数と組み合わせると一括クレンジングに便利</li></ul>



<p>外部からデータを取り込む機会が多い方は、「CHAR(160)」というキーワードを覚えておくと安心です。ぜひ活用してみてください。</p>



<h3 class="wp-block-heading"><span id="toc25">関連記事</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-substitute/">SUBSTITUTE関数の使い方</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-char/">CHAR関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-len/">LEN関数の使い方</a></li><li><a href="https://mashukabu.com/excel-vba-howto-use-trim/">VBA Trimで前後の空白を削除する方法</a></li><li><a href="https://mashukabu.com/excel-vba-howto-use-ltrim/">VBA LTrimで先頭の空白を削除する方法</a></li><li><a href="https://mashukabu.com/excel-vba-howto-use-rtrim/">VBA RTrimで末尾の空白を削除する方法</a></li><li><a href="https://mashukabu.com/excel-vba-howto-remove-space/">VBA 文字列の空白を削除する方法まとめ</a></li></ul>



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



<p>Excel関数の一覧は下記の記事で確認できます。</p>



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



<p>エラー値が表示される場合は、下記の記事も参考にしてみてください。</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/about-nbsp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
