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

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>CLEAN関数 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Excelのセル内改行を一括削除する3つの方法｜CLEAN・SUBSTITUTE・検索置換の使い分け</title>
		<link>https://mashukabu.com/excel-delete-line-breaks/</link>
					<comments>https://mashukabu.com/excel-delete-line-breaks/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 08 Jun 2026 15:51:25 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[CLEAN関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[仕事効率化]]></category>
		<category><![CDATA[改行]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=7863</guid>

					<description><![CDATA[ExcelでAlt+Enterや外部データの改行を一括削除する方法を解説。検索置換（Ctrl+J）・SUBSTITUTE関数・CLEAN関数の3つを状況別に使い分けるコツと、CLEANで消えないケースへの対処法も紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Webサイトや基幹システムからコピペしたデータをExcelに貼り付けたとき、セル内に不要な改行が入ってレイアウトが崩れる経験はありませんか。VLOOKUPの検索条件にしたい列に改行が混じっていて、いくら数式を見直してもヒットしない、というのもよくあるトラブルです。</p>



<p class="wp-block-paragraph">セル内の改行は「見えない文字」なので、手作業で消そうとすると1セルずつダブルクリックしてBackSpaceを押す羽目になり、件数が多いと現実的ではありません。</p>



<p class="wp-block-paragraph">この記事では、Excelのセル内改行を一括で削除する3つの方法を、状況別の使い分けまで含めて解説します。「Ctrl+J」を使った検索と置換、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-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">セル内の改行はなぜ問題になるのか</a></li><li><a href="#toc2" tabindex="0">方法1: 検索と置換（Ctrl+H + Ctrl+J）で一括削除する</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">方法2: SUBSTITUTE関数で改行を削除する（元データを残したいとき）</a><ol><li><a href="#toc6" tabindex="0">基本の使い方</a></li><li><a href="#toc7" tabindex="0">古いMacファイルに対応する場合</a></li></ol></li><li><a href="#toc8" tabindex="0">方法3: CLEAN関数で制御文字ごとまとめて消す</a><ol><li><a href="#toc9" tabindex="0">CLEAN+TRIMの組み合わせ</a></li></ol></li><li><a href="#toc10" tabindex="0">3つの方法の使い分け早見表</a></li><li><a href="#toc11" tabindex="0">CLEANで消えないケースへの対処法</a></li><li><a href="#toc12" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">セル内の改行はなぜ問題になるのか</span></h2>



<p class="wp-block-paragraph">Excelのセル内改行は、入力中に「Alt+Enter」を押すことで挿入される改行コードです。実体はCHAR(10)、つまりラインフィード（LF）と呼ばれる制御文字です。画面上は単なる改行に見えますが、Excelの内部では1文字としてカウントされます。</p>



<p class="wp-block-paragraph">この見えない1文字が悪さをするのは、主に次のような場面です。</p>



<ul class="wp-block-list"><li>VLOOKUPやXLOOKUPで検索値が一致しない（末尾に改行が混入）</li><li>文字列連結したときに意図しない位置で改行が入る</li><li>CSV書き出し時に行がずれて出力される</li><li>フィルターで「同じ値のはず」が別グループに分かれる</li></ul>



<p class="wp-block-paragraph">WindowsとMacの現行版Excel（Excel 2016以降）では、どちらもセル内改行はCHAR(10)に統一されています。ただし古いMacファイルやUNIX系システムのデータには、CHAR(13)（キャリッジリターン）が混ざっていることもあるので注意が必要です。</p>



<p class="wp-block-paragraph">文字コードの基本については<a href="https://mashukabu.com/excel-function-howto-use-char/">ExcelのCHAR関数の使い方</a>で詳しく解説しています。</p>



<p class="wp-block-paragraph">それでは、3つの一括削除方法を順番に見ていきましょう。</p>



<h2 class="wp-block-heading"><span id="toc2">方法1: 検索と置換（Ctrl+H + Ctrl+J）で一括削除する</span></h2>



<p class="wp-block-paragraph">一番手軽で、覚えてしまえば数秒で終わる方法が「検索と置換」を使うやり方です。Excelの検索ダイアログでは、Ctrl+Jを押すと改行コード（CHAR(10)）を検索文字列として入力できます。</p>



<p class="wp-block-paragraph">元のデータをそのまま書き換えたいときに最適で、関数も新しい列も不要です。</p>



<h3 class="wp-block-heading"><span id="toc3">手順</span></h3>



<p class="wp-block-paragraph">操作はとてもシンプルです。次の順番で進めてください。</p>



<ol class="wp-block-list"><li>改行を削除したい範囲を選択する（列全体でもOK）</li><li>Ctrl+H を押して「検索と置換」ダイアログを開く</li><li>「検索する文字列」の欄をクリックして、Ctrl+J を押す（見た目は何も入らないが内部に改行コードが入る）</li><li>「置換後の文字列」は空欄のままにする</li><li>「すべて置換」をクリックする</li></ol>



<p class="wp-block-paragraph">Ctrl+Jを押した直後、検索欄には何も表示されません。「本当に入力されたのか？」と不安になりますが、ちゃんと改行コードが入っています。心配な場合は検索欄をクリックしてから矢印キーを押すと、カーソルが微妙に動いて入力済みとわかります。</p>



<h3 class="wp-block-heading"><span id="toc4">改行をスペースに変えたい場合</span></h3>



<p class="wp-block-paragraph">改行を完全に消すのではなく、半角スペースに置き換えたい場合もあります。たとえば「東京都千代田区(改行)永田町1-1-1」という住所を「東京都千代田区 永田町1-1-1」のように一行に整えるケースです。</p>



<p class="wp-block-paragraph">その場合は手順4の「置換後の文字列」欄に半角スペースを1文字入力してから「すべて置換」を押します。</p>



<pre class="wp-block-code"><code>検索する文字列: Ctrl+J（改行コード）
置換後の文字列: （半角スペース1文字）</code></pre>



<p class="wp-block-paragraph">注意点として、検索欄に一度Ctrl+Jを押すと、Excelを閉じるまでその状態が記憶されます。次の検索でうまく動かないと感じたら、検索欄をクリックしてBackSpaceで一度クリアしてから再入力してください。</p>



<h2 class="wp-block-heading"><span id="toc5">方法2: SUBSTITUTE関数で改行を削除する（元データを残したいとき）</span></h2>



<p class="wp-block-paragraph">元データはそのままにして、別の列に「改行を削除したバージョン」を作りたい場合は、SUBSTITUTE関数を使います。検証ログや原本を残しつつクリーニング結果を確認したいときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc6">基本の使い方</span></h3>



<p class="wp-block-paragraph">SUBSTITUTE関数は「文字列の中の特定の文字を別の文字に置き換える」関数です。改行コードはCHAR(10)で指定します。</p>



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



<p class="wp-block-paragraph">これでA1セルの改行がすべて削除された文字列が返ります。第3引数を空文字列（&#8221;&#8221;）にしているので、改行が「何もない」に置き換わります。結果として削除されたように見える、という仕組みです。</p>



<p class="wp-block-paragraph">改行を半角スペースに変換したい場合は、第3引数を変更します。</p>



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



<p class="wp-block-paragraph">連続した改行をまとめて1つのスペースにしたい場合は、TRIM関数と組み合わせると余分な空白も整理されます。</p>



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



<p class="wp-block-paragraph">SUBSTITUTE関数のさらに詳しい使い方は<a href="https://mashukabu.com/excel-function-howto-use-substitute/">ExcelのSUBSTITUTE関数の使い方</a>を参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc7">古いMacファイルに対応する場合</span></h3>



<p class="wp-block-paragraph">前述のとおり、古いMacや一部のシステムから持ち込んだデータにはCHAR(13)（キャリッジリターン）が含まれていることがあります。CHAR(10)だけを消してもうまくクリーニングできないときは、SUBSTITUTEを入れ子にして両方を処理しましょう。</p>



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



<p class="wp-block-paragraph">内側のSUBSTITUTEでCHAR(10)を消し、外側のSUBSTITUTEでCHAR(13)を消す流れです。WindowsのCRLF（CHAR(13)+CHAR(10)）形式の改行もこれで両方処理できます。</p>



<h2 class="wp-block-heading"><span id="toc8">方法3: CLEAN関数で制御文字ごとまとめて消す</span></h2>



<p class="wp-block-paragraph">外部システムから取得したデータには、改行以外にもタブ文字や非表示の制御文字が紛れ込んでいることがあります。何が混ざっているか分からないけれど、とにかく「印刷できない文字」をまとめて消したい、というときに使うのがCLEAN関数です。</p>



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



<p class="wp-block-paragraph">CLEAN関数は、ASCII文字コードの0〜31番（印刷不可能な制御文字）を一括で削除します。CHAR(10)もCHAR(13)もこの範囲に含まれるので、改行は当然削除されます。</p>



<p class="wp-block-paragraph">CLEAN関数の挙動や対応範囲については<a href="https://mashukabu.com/excel-function-howto-use-clean/">ExcelのCLEAN関数の使い方</a>で詳しく解説しています。</p>



<p class="wp-block-paragraph">注意点として、CLEAN関数は「削除」しかできず、スペースへの変換はできません。「改行をスペースに置き換えたい」という用途にはSUBSTITUTE関数を使ってください。</p>



<h3 class="wp-block-heading"><span id="toc9">CLEAN+TRIMの組み合わせ</span></h3>



<p class="wp-block-paragraph">実務でCLEAN関数を使うときは、TRIM関数と組み合わせるのが定番です。</p>



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



<p class="wp-block-paragraph">CLEANで制御文字を消したあと、TRIMが前後の余分なスペースを除去します。文字列中の連続スペース（2つ以上）も1つに整えてくれます。</p>



<p class="wp-block-paragraph">ExcelにインポートしたCSVデータの全列クリーニングなど、「とりあえずキレイにしたい」場面で最も汎用的な数式です。迷ったらこれを最初に試すと、たいていのデータが整います。</p>



<h2 class="wp-block-heading"><span id="toc10">3つの方法の使い分け早見表</span></h2>



<p class="wp-block-paragraph">ここまで紹介した3つの方法を、状況別にまとめると次のようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>状況</th><th>推奨される方法</th><th>理由</th></tr></thead><tbody><tr><td>元データを書き換えてOK</td><td>検索と置換（Ctrl+H + Ctrl+J）</td><td>関数不要、最も手早い</td></tr><tr><td>元データを残したい</td><td>SUBSTITUTE または CLEAN</td><td>別列に結果を出せる</td></tr><tr><td>改行だけを正確に削除したい</td><td>SUBSTITUTE</td><td>改行コードだけを狙い撃ち</td></tr><tr><td>改行を半角スペースに変換したい</td><td>SUBSTITUTE</td><td>第3引数で柔軟に変換可能</td></tr><tr><td>複数の制御文字をまとめて除去</td><td>CLEAN</td><td>タブや非表示文字も一括処理</td></tr><tr><td>インポートデータ全体クリーニング</td><td>TRIM(CLEAN())</td><td>スペース整理も同時に行える</td></tr><tr><td>古いMacのCHAR(13)が混在</td><td>SUBSTITUTE入れ子</td><td>CHAR(10)とCHAR(13)を両方処理</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">迷ったときの判断基準はシンプルです。「元データを残す必要があるかどうか」「改行以外の制御文字も気になるか」の2点で決めれば大丈夫です。</p>



<p class="wp-block-paragraph">その場限りの作業なら検索と置換、定期的に更新されるデータなら関数を使って自動処理にしておくと、運用がぐっと楽になります。</p>



<h2 class="wp-block-heading"><span id="toc11">CLEANで消えないケースへの対処法</span></h2>



<p class="wp-block-paragraph">「CLEANもSUBSTITUTEもCHAR(10)もCHAR(13)も試したのに、なぜか改行のような空白が消えない」という状況に遭遇することがあります。</p>



<p class="wp-block-paragraph">これはたいてい、CHAR(160)（ノーブレークスペース、NBSP）が原因です。HTMLの「&nbsp;」由来の文字で、Webからコピペしたデータによく紛れ込みます。見た目はただのスペースですが、通常のスペース（CHAR(32)）とは別の文字コードなので、TRIMでもCLEANでも除去できません。</p>



<p class="wp-block-paragraph">まず、本当にCHAR(160)が原因かを確認してみましょう。次の数式で先頭文字のコードを調べられます。</p>



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



<p class="wp-block-paragraph">これが160を返したら、原因はノーブレークスペースで確定です。MID関数の第2引数（開始位置）を変えれば、文字列の途中もチェックできます。</p>



<p class="wp-block-paragraph">CHAR(160)を削除するには、CLEAN関数の結果にさらにSUBSTITUTEをかけるのが定番です。</p>



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



<p class="wp-block-paragraph">CHAR(160)を半角スペースに変換したい場合は、第3引数をスペースにします。</p>



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



<p class="wp-block-paragraph">TRIMとも組み合わせれば、ほぼあらゆる「見えない文字」を整理した、完全にきれいな文字列が手に入ります。</p>



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



<p class="wp-block-paragraph">データクリーニングの最終形として覚えておくと、Webデータや海外システムからのインポートでハマることがなくなります。</p>



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



<p class="wp-block-paragraph">Excelのセル内改行を一括削除する3つの方法と、それぞれの使い分けを紹介してきました。最後にポイントを整理しておきます。</p>



<ul class="wp-block-list"><li>改行の正体はCHAR(10)。Alt+Enterで入力される見えない1文字</li><li>元データを書き換えてOKなら「検索と置換（Ctrl+H → Ctrl+J）」が最速</li><li>元データを残したいなら「SUBSTITUTE(A1,CHAR(10),&#8221;&#8221;)」を使う</li><li>制御文字をまとめて消したいなら「CLEAN(A1)」、定番は「TRIM(CLEAN(A1))」</li><li>それでも消えないときはCHAR(160)を疑い、CODE関数で確認</li><li>古いMacデータ対策にはCHAR(13)も同時に処理する</li></ul>



<p class="wp-block-paragraph">データクリーニングは地味な作業ですが、ここで時間を取られると後工程のすべてが遅れます。今回の3つの方法をパターンとして覚えておけば、「見えない改行」に振り回されることはなくなるはずです。</p>



<p class="wp-block-paragraph">普段の作業で改行混入に困ったときは、まずTRIM(CLEAN())を試して、それでもダメならCHAR(160)を疑う、という順番でチェックしてみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-delete-line-breaks/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 class="wp-block-paragraph">CSVをインポートしたら、セルの中に謎の改行が入っていた。Webページからコピペしたデータに、見えない文字が紛れ込んでいた――そんな経験はありませんか？</p>



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



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



<p class="wp-block-paragraph">この記事では、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 class="wp-block-paragraph">CLEAN関数（読み方：クリーン関数）は、<strong>テキストからASCII制御文字を削除する関数</strong>です。</p>



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph">これらは画面に表示されない文字なので、目視では見つけられません。CLEAN関数を使えば、まとめて削除できます。</p>



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



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



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



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>テキスト</td><td>必須</td><td>制御文字を削除したい文字列やセル参照</td></tr></tbody></table></figure>



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



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph">ポイントは、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 class="wp-block-paragraph">CSVファイルをインポートすると、セルの中に改行が入り込むことがあります。CLEAN関数で削除してみましょう。</p>



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



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



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



<p class="wp-block-paragraph">列全体に適用するのが実務的な使い方です。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 class="wp-block-paragraph">「制御文字が入っているかどうか」を確認したいときは、CODE関数が便利です。CODE関数は、文字列の先頭1文字のASCIIコードを返します。</p>



<p class="wp-block-paragraph">実務で手軽に使える診断コードを紹介します。</p>



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



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



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



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



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



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



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



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



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



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



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



<p class="wp-block-paragraph">全角スペースや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 class="wp-block-paragraph">ちょっと長く見えますが、やっていることはシンプルです。</p>



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



<p class="wp-block-paragraph">この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 class="wp-block-paragraph">CLEAN関数はASCIIコード0〜31の制御文字しか削除しません。それ以外の「見えない文字」は残ったままになります。</p>



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



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



<p class="wp-block-paragraph"><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 class="wp-block-paragraph">CHAR(160)を半角スペースに変換してから、TRIMで整形するのが定番です。</p>



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



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



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



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



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



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



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



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



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



<p class="wp-block-paragraph"><strong>Q. CLEAN関数でスペースは削除できますか？</strong></p>



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



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



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



<p class="wp-block-paragraph"><strong>Q. ExcelのCLEAN関数との違いはありますか？</strong></p>



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



<p class="wp-block-paragraph"><strong>Q. CLEAN関数を使っても文字が残る場合は？</strong></p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">CLEAN関数は、改行やタブなどの制御文字を削除するシンプルな関数です。</p>



<p class="wp-block-paragraph">ポイントを整理します。</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 class="wp-block-paragraph">まずは <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>ExcelのCLEAN関数の使い方｜制御文字を一括削除する方法</title>
		<link>https://mashukabu.com/excel-function-howto-use-clean/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-clean/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Fri, 19 Aug 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[CLEAN関数]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[テキスト整形]]></category>
		<category><![CDATA[制御文字]]></category>
		<category><![CDATA[関数比較]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2569</guid>

					<description><![CDATA[ExcelのCLEAN関数で印刷できない制御文字を一括削除する方法を解説。基本の書き方からTRIM・SUBSTITUTEとの連携パターン、CLEANでは除去できない文字への対処法まで、実務で役立つデータクレンジング術を紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">CSVや外部システムから取り込んだデータに、目に見えない文字が混ざっていたことはありませんか？ 文字化けのような記号が表示されたり、VLOOKUPが一致しなかったり。手作業で探すのは大変ですし、そもそも見えない文字は目視では見つかりません。</p>



<p class="wp-block-paragraph">CLEAN関数を使えば、こうした印刷できない制御文字をまとめて削除できます。この記事では基本の書き方から実務の活用パターンまで紹介します。</p>



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



<ul class="wp-block-list"><li>CSVや他システムから取り込んだデータの文字化けを解消したい</li><li>印刷できない制御文字を一括で削除したい</li><li>CLEAN関数とTRIM関数の違いを知りたい</li></ul>




  <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">CLEAN関数とは？</a></li><li><a href="#toc2" tabindex="0">CLEAN関数の書き方（構文と引数）</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">CLEAN関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">制御文字を削除する基本例</a></li><li><a href="#toc7" tabindex="0">セル参照で一括処理する</a></li><li><a href="#toc8" tabindex="0">文字列を直接指定する</a></li></ol></li><li><a href="#toc9" tabindex="0">CLEAN関数の実務活用パターン</a><ol><li><a href="#toc10" tabindex="0">CLEAN+TRIMで外部データを整形する</a></li><li><a href="#toc11" tabindex="0">CLEAN+SUBSTITUTE+TRIMの3点セットで完全クレンジング</a></li><li><a href="#toc12" tabindex="0">CLEANで除去できない文字をCHAR+SUBSTITUTEで対処する</a></li></ol></li><li><a href="#toc13" tabindex="0">CLEAN関数のよくあるエラーと対処法</a></li><li><a href="#toc14" tabindex="0">似た関数との違い・使い分け</a></li><li><a href="#toc15" tabindex="0">まとめ</a><ol><li><a href="#toc16" tabindex="0">関連記事</a></li><li><a href="#toc17" tabindex="0">関数一覧</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">CLEAN（クリーン）関数は、文字列からASCII制御文字を削除する関数です。英語の「clean」は「きれいにする」という意味で、データを浄化するための関数です。</p>



<p class="wp-block-paragraph">ここでいう「制御文字」とは、文字コード0〜31の印刷できない文字のことです。改行コード（CHAR(10)）やタブ（CHAR(9)）、キャリッジリターン（CHAR(13)）などが該当します。</p>



<p class="wp-block-paragraph">これらの文字は画面上では見えないか、四角い記号として表示されます。外部データを取り込んだときに紛れ込むことが多いです。VLOOKUPの不一致やセル内改行の崩れなど、厄介なトラブルの原因になります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>CLEAN関数が削除するのはASCII制御文字（コード0〜31）のみです。通常のスペースや全角スペースは削除しません。スペースの整理には<a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>を使います。</p></blockquote>



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



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



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



<p class="wp-block-paragraph">引数は「文字列」の1つだけです。セル参照のほか、ダブルクォーテーションで囲んだ文字列を直接指定することもできます。</p>



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



<h3 class="wp-block-heading"><span id="toc6">制御文字を削除する基本例</span></h3>



<p class="wp-block-paragraph">セルA1に改行コード付きの文字列が入っている場合です。</p>



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



<p class="wp-block-paragraph">CLEAN関数を適用すると、改行やタブなどの制御文字がすべて削除されます。見た目がおかしいデータも、この一手で綺麗になります。</p>



<h3 class="wp-block-heading"><span id="toc7">セル参照で一括処理する</span></h3>



<p class="wp-block-paragraph">データが大量にある場合は、作業列を使って一括処理するのが効率的です。</p>



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



<p class="wp-block-paragraph">この数式を下方向にコピーして、整形後のデータを「値として貼り付け」で元の列に上書きすれば完了です。</p>



<h3 class="wp-block-heading"><span id="toc8">文字列を直接指定する</span></h3>



<p class="wp-block-paragraph">セル参照ではなく、数式内に文字列を直接書くこともできます。</p>



<pre class="wp-block-code"><code>=CLEAN(&quot;テスト&quot; &amp; CHAR(10) &amp; &quot;データ&quot;)</code></pre>



<p class="wp-block-paragraph">CHAR(10)は改行コードです。CLEAN関数が改行を除去して、「テストデータ」と表示されます。</p>



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



<h3 class="wp-block-heading"><span id="toc10">CLEAN+TRIMで外部データを整形する</span></h3>



<p class="wp-block-paragraph">外部データには制御文字とスペースの両方が混ざっていることがよくあります。CLEAN関数と<a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>を組み合わせれば、両方を一度に処理できます。</p>



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



<p class="wp-block-paragraph">まずCLEAN関数で制御文字を除去し、次にTRIM関数で余分なスペースを整理します。CSVや他システムからのデータ取り込み後は、このセットで処理しておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc11">CLEAN+SUBSTITUTE+TRIMの3点セットで完全クレンジング</span></h3>



<p class="wp-block-paragraph">Webページからコピーしたデータには、ノーブレークスペース（CHAR(160)）が含まれることがあります。この文字はCLEAN関数でもTRIM関数でも削除できません。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>を加えた3点セットなら、ほぼすべての不要文字を除去できます。</p>



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



<p class="wp-block-paragraph">処理の流れは次のとおりです。</p>



<ol class="wp-block-list"><li>SUBSTITUTE関数でノーブレークスペースを半角スペースに変換</li><li>CLEAN関数で制御文字を除去</li><li>TRIM関数で余分なスペースを整理</li></ol>



<p class="wp-block-paragraph">この3点セットは外部データのクレンジングで最も頼りになる定番パターンです。迷ったらまずこの数式を試してみてください。</p>



<h3 class="wp-block-heading"><span id="toc12">CLEANで除去できない文字をCHAR+SUBSTITUTEで対処する</span></h3>



<p class="wp-block-paragraph">CLEAN関数はASCII制御文字（コード0〜31）だけを削除します。コード128以上のUnicode制御文字やNBSP（CHAR(160)）は対象外です。</p>



<p class="wp-block-paragraph">こうした文字はCODE関数で文字コードを特定し、<a href="https://mashukabu.com/excel-function-howto-use-char/">CHAR関数</a>とSUBSTITUTE関数で個別に削除します。</p>



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



<p class="wp-block-paragraph">まずCODE関数でセル内の先頭文字の文字コードを調べます。正体がわかったら、SUBSTITUTE関数で削除しましょう。</p>



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



<p class="wp-block-paragraph">たとえば文字コード127（DEL文字）が混入していた場合、上の数式で削除できます。CLEAN関数の対象外の文字に遭遇したら、この手順で対処してください。</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/about-nbsp/">ノーブレークスペースの解説記事</a>を参照してください。</p></blockquote>



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



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



<figure class="wp-block-table"><table><thead><tr><th>症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>文字化けが消えない</td><td>Unicode制御文字（コード128以上）</td><td>CODE関数で文字コードを特定し、SUBSTITUTE+CHARで削除</td></tr><tr><td>スペースが残る</td><td>CLEAN関数はスペースを削除しない</td><td><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>で余分なスペースを除去</td></tr><tr><td>見えない文字が残る</td><td>ノーブレークスペース（CHAR(160)）</td><td><code>=SUBSTITUTE(A1,CHAR(160),"")</code> で削除</td></tr><tr><td>#VALUE!エラー</td><td>引数が指定されていない</td><td>文字列の引数は必須。セル参照か文字列を指定してください</td></tr><tr><td>VLOOKUPが一致しない</td><td>CLEAN後もまだ不一致</td><td><a href="https://mashukabu.com/excel-function-howto-use-asc/">ASC関数</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>CLEAN関数で文字化けが消えないときは、<code>=CODE(MID(A1,1,1))</code> で1文字ずつ文字コードを確認してみましょう。0〜31以外の値が返ってきたら、CLEAN関数の対象外の文字です。</p></blockquote>



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



<p class="wp-block-paragraph">CLEAN関数とよく比較される関数の違いを整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>CLEAN関数</th><th>TRIM関数</th><th>SUBSTITUTE関数</th></tr></thead><tbody><tr><td>削除対象</td><td><strong>制御文字</strong>（コード0〜31）</td><td><strong>余分な半角スペース</strong></td><td><strong>指定した文字列</strong></td></tr><tr><td>改行の削除</td><td>できる</td><td>できない</td><td>CHAR(10)を指定すればできる</td></tr><tr><td>スペースの処理</td><td>できない</td><td>前後削除＋内部を1つに圧縮</td><td>指定すれば削除可能</td></tr><tr><td>NBSP（CHAR(160)）</td><td><strong>できない</strong></td><td><strong>できない</strong></td><td>CHAR(160)を指定すれば削除可能</td></tr><tr><td>引数の数</td><td>1つ（文字列のみ）</td><td>1つ（文字列のみ）</td><td>3〜4つ（文字列、検索文字列、置換文字列、[置換対象]）</td></tr><tr><td>使う場面</td><td>外部データの制御文字除去</td><td>スペースの整理</td><td>特定の文字を狙って置換・削除</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い分けのポイントは「何を消したいか」です。</p>



<ul class="wp-block-list"><li><strong>制御文字</strong>を一括で消したい → CLEAN関数</li><li><strong>余分なスペース</strong>を整理したい → <a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a></li><li><strong>特定の文字</strong>を狙って消したい → <a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a></li><li><strong>全部まとめて整形</strong>したい → <code>=TRIM(CLEAN(SUBSTITUTE(A1,CHAR(160)," ")))</code> の3点セット</li></ul>



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



<p class="wp-block-paragraph">CLEAN関数は「文字列からASCII制御文字を一括削除する」ための関数です。</p>



<ul class="wp-block-list"><li>ASCII制御文字（コード0〜31）の改行・タブ・CRなどを削除する</li><li>引数は「文字列」の1つだけでシンプル</li><li><code>=TRIM(CLEAN(A2))</code> でスペース整理と制御文字除去を同時に処理できる</li><li>ノーブレークスペース（CHAR(160)）はCLEAN対象外。SUBSTITUTE関数で対処する</li><li>3点セット <code>=TRIM(CLEAN(SUBSTITUTE(A1,CHAR(160)," ")))</code> が最強のクレンジング数式</li></ul>



<p class="wp-block-paragraph">外部データの取り込みでおかしな文字が混ざっていたら、まずCLEAN関数を試してみてください。TRIM関数やSUBSTITUTE関数と組み合わせれば、ほとんどのクレンジングに対応できます。</p>



<h3 class="wp-block-heading"><span id="toc16">関連記事</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-char/">CHAR関数の使い方</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/about-nbsp/">ノーブレークスペースとは</a></li></ul>



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



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



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



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-error-value-list/">Excelのエラー値一覧</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-clean/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 class="wp-block-paragraph">Webサイトからコピーしたデータに空白が入っていて、TRIM関数で消そうとしたのに消えない。そんな経験はありませんか？</p>



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



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



<p class="wp-block-paragraph">この記事は次のような人におすすめ</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-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">ノーブレークスペースとは？</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><li><a href="#toc6" tabindex="0">ChromeやTeamsなどのChromiumアプリからのコピペ</a></li></ol></li><li><a href="#toc7" tabindex="0">ノーブレークスペースの見分け方</a><ol><li><a href="#toc8" tabindex="0">CODE関数で文字コードを確認する</a></li><li><a href="#toc9" tabindex="0">LEN関数とSUBSTITUTE関数で個数を特定する</a></li></ol></li><li><a href="#toc10" tabindex="0">条件付き書式でNBSPを含むセルをハイライトする</a><ol><li><a href="#toc11" tabindex="0">設定手順</a></li><li><a href="#toc12" tabindex="0">複数の見えない空白をまとめてハイライトする</a></li><li><a href="#toc13" tabindex="0">作業列に「マーカー」を立てる方法</a></li></ol></li><li><a href="#toc14" tabindex="0">ノーブレークスペースを関数で削除する方法</a><ol><li><a href="#toc15" tabindex="0">パターン1: NBSPだけを削除する</a></li><li><a href="#toc16" tabindex="0">パターン2: NBSPと前後の半角スペースをまとめて削除する</a></li><li><a href="#toc17" tabindex="0">パターン3: 制御文字も含めて一括クレンジングする</a></li><li><a href="#toc18" tabindex="0">パターン4: すべてのスペースを削除する</a></li></ol></li><li><a href="#toc19" tabindex="0">空白の種類と対処関数の早見表</a></li><li><a href="#toc20" tabindex="0">ノーブレークスペースをVBAで削除する方法</a><ol><li><a href="#toc21" tabindex="0">Replace関数でNBSPを削除する</a></li><li><a href="#toc22" tabindex="0">選択範囲のNBSPを一括削除するマクロ</a></li><li><a href="#toc23" tabindex="0">すべての空白を一括削除するマクロ</a></li><li><a href="#toc24" tabindex="0">VBEの起動方法</a></li><li><a href="#toc25" tabindex="0">WorksheetFunction.TrimではNBSPは削除できない</a></li></ol></li><li><a href="#toc26" tabindex="0">VLOOKUPやCOUNTIFで不一致が起きたときの対処法</a><ol><li><a href="#toc27" tabindex="0">VLOOKUPで一致しないときの確認手順</a></li><li><a href="#toc28" tabindex="0">COUNTIFやSUMIFで集計がずれるとき</a></li><li><a href="#toc29" tabindex="0">XLOOKUPやXMATCHでNBSPが原因で#N/Aになるとき</a></li><li><a href="#toc30" tabindex="0">EXACT関数で&#8221;見た目は同じなのに不一致&#8221;の原因を特定する</a></li></ol></li><li><a href="#toc31" tabindex="0">CSV出力時の文字化け対策</a></li><li><a href="#toc32" tabindex="0">検索と置換（Ctrl+H）でNBSPを一括削除する</a><ol><li><a href="#toc33" tabindex="0">テンキーがある場合</a></li><li><a href="#toc34" tabindex="0">テンキーがない場合</a></li></ol></li><li><a href="#toc35" tabindex="0">Mac版Excelでの注意点</a><ol><li><a href="#toc36" tabindex="0">Macでの代替手段</a></li><li><a href="#toc37" tabindex="0">Mac特有のNBSP混入経路</a></li></ol></li><li><a href="#toc38" tabindex="0">Power QueryでNBSPを削除する方法</a><ol><li><a href="#toc39" tabindex="0">GUI操作で削除する手順</a></li><li><a href="#toc40" tabindex="0">M言語のコードで削除する</a></li><li><a href="#toc41" tabindex="0">複数列をまとめてクレンジングする（Table.TransformColumns）</a></li></ol></li><li><a href="#toc42" tabindex="0">GoogleスプレッドシートでNBSPを削除する方法</a><ol><li><a href="#toc43" tabindex="0">CLEAN関数ではNBSPを削除できない</a></li></ol></li><li><a href="#toc44" tabindex="0">Google Apps ScriptでNBSPを一括削除する</a><ol><li><a href="#toc45" tabindex="0">TextFinderクラスで置換する</a></li><li><a href="#toc46" tabindex="0">正規表現でまとめて処理する</a></li></ol></li><li><a href="#toc47" tabindex="0">ピボットテーブルでNBSPが引き起こす集計エラーと対策</a><ol><li><a href="#toc48" tabindex="0">起きやすい3つの症状</a></li><li><a href="#toc49" tabindex="0">よくある発生パターン</a></li><li><a href="#toc50" tabindex="0">対策：ピボット作成前にクレンジングする</a></li></ol></li><li><a href="#toc51" tabindex="0">Excel 365のREGEXREPLACE関数でNBSPを削除する</a><ol><li><a href="#toc52" tabindex="0">NBSPを正規表現で削除する数式</a></li><li><a href="#toc53" tabindex="0">NBSPと半角スペースをまとめて整形する</a></li><li><a href="#toc54" tabindex="0">SUBSTITUTE式との使い分け</a></li></ol></li><li><a href="#toc55" tabindex="0">LAMBDA関数でNBSP除去のオリジナル関数を作る</a><ol><li><a href="#toc56" tabindex="0">手順（Windows版）</a></li><li><a href="#toc57" tabindex="0">手順（Mac版）</a></li></ol></li><li><a href="#toc58" tabindex="0">ノーブレークスペース以外の「見えない空白」の見分けと削除</a><ol><li><a href="#toc59" tabindex="0">代表的な見えない空白文字の一覧</a></li><li><a href="#toc60" tabindex="0">UNICHAR関数で指定して削除する</a></li><li><a href="#toc61" tabindex="0">Microsoft 365なら正規表現で一括処理する</a></li></ol></li><li><a href="#toc62" tabindex="0">NBSPを最初から混入させない3つの予防策</a><ol><li><a href="#toc63" tabindex="0">予防策1: テキストエディタ経由でペーストする</a></li><li><a href="#toc64" tabindex="0">予防策2: 値のみ貼り付け（Ctrl+Shift+V / Alt+E+S+V）を習慣にする</a></li><li><a href="#toc65" tabindex="0">予防策3: Power Queryを取り込み窓口にする</a></li></ol></li><li><a href="#toc66" tabindex="0">よくある質問（FAQ）</a><ol><li><a href="#toc67" tabindex="0">Q. TeamsやSlackからコピペするとNBSPが入りますか？</a></li><li><a href="#toc68" tabindex="0">Q. EXACT関数でFALSEなのに目視では同じ文字列です。なぜですか？</a></li><li><a href="#toc69" tabindex="0">Q. XLOOKUPでも#N/Aが出ます。VLOOKUPと同じ対処法ですか？</a></li><li><a href="#toc70" tabindex="0">Q. Ctrl+Vで貼り付けるたびにNBSPが入ります。防ぐ方法はありますか？</a></li><li><a href="#toc71" tabindex="0">Q. CODE関数で160と出ました。これは必ずNBSPですか？</a></li><li><a href="#toc72" tabindex="0">Q. SUBSTITUTE+CHAR(160)を入れたのに、VLOOKUPの不一致が直りません。</a></li><li><a href="#toc73" tabindex="0">Q. スマートフォンのメモアプリからコピーするとNBSPが入りますか？</a></li><li><a href="#toc74" tabindex="0">Q. Power QueryのText.TrimでNBSPも消えますか？</a></li><li><a href="#toc75" tabindex="0">Q. 「検索と置換」で削除したのに、まだ空白があります。</a></li><li><a href="#toc76" tabindex="0">Q. NBSP以外にも「見えない空白」はありますか？</a></li><li><a href="#toc77" tabindex="0">Q. Mac版ExcelでもAlt+0160は使えますか？</a></li><li><a href="#toc78" tabindex="0">Q. LAMBDA関数でNBSP削除の自作関数を作れますか？</a></li><li><a href="#toc79" tabindex="0">Q. Google Apps ScriptでNBSPを削除できますか？</a></li></ol></li><li><a href="#toc80" tabindex="0">まとめ</a><ol><li><a href="#toc81" tabindex="0">関連記事</a></li><li><a href="#toc82" tabindex="0">関数一覧</a></li></ol></li></ol>
    </div>
  </div>

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



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



<p class="wp-block-paragraph">通常の半角スペース（文字コード 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 class="wp-block-paragraph">NBSPがExcelに入り込む主なルートは次のとおりです。</p>



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



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



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



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



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



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



<h3 class="wp-block-heading"><span id="toc6">ChromeやTeamsなどのChromiumアプリからのコピペ</span></h3>



<p class="wp-block-paragraph">近年、業務でよく使われるアプリからのコピペが混入経路として増えています。Chrome・Edge・Teams・Slack・VS Codeはいずれも内部でChromiumベースのレンダリングエンジンを使っています。テキストをコピーするとHTMLもクリップボードに乗るため、Excelに貼り付けたとき、HTML内の <code>&nbsp;</code> がそのままNBSPとして混入します。</p>



<figure class="wp-block-table"><table><thead><tr><th>アプリ</th><th>混入のしやすさ</th><th>補足</th></tr></thead><tbody><tr><td>Chrome / Edge</td><td>高い</td><td>Webページから直接コピーするとHTMLが同伴する</td></tr><tr><td>Microsoft Teams</td><td>高い</td><td>チャットメッセージにNBSPが含まれることが多い</td></tr><tr><td>Slack</td><td>中程度</td><td>環境・バージョンによって差がある</td></tr><tr><td>VS Code</td><td>中程度</td><td>MarkdownやHTMLファイルの内容をコピーした場合</td></tr><tr><td>macOS（Option+Space）</td><td>高い</td><td>macOSの入力ショートカットでNBSPが意図せず入力される</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">コピペの頻度が多いほどNBSPが累積しやすくなります。「どのアプリから貼ったか」を思い出すだけで、混入原因の絞り込みに役立ちます。</p>



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



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



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



<p class="wp-block-paragraph">セルの先頭文字を調べるには、次の数式を使います。</p>



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



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



<p class="wp-block-paragraph">途中に隠れている場合は、<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="toc9">LEN関数とSUBSTITUTE関数で個数を特定する</span></h3>



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



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



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



<h2 class="wp-block-heading"><span id="toc10">条件付き書式でNBSPを含むセルをハイライトする</span></h2>



<p class="wp-block-paragraph">クレンジングする前に、まず「どのセルにNBSPが入っているか」を視覚的に確認したいときに便利な方法です。条件付き書式と組み合わせると、データ全体を見渡しながらNBSPの混入状況を一目で把握できます。</p>



<h3 class="wp-block-heading"><span id="toc11">設定手順</span></h3>



<ol class="wp-block-list"><li>NBSPの有無を確認したいセル範囲を選択する（例: A2:A100）</li><li>[ホーム] タブ → [条件付き書式] → [新しいルール] をクリック</li><li>[数式を使用して、書式設定するセルを決定] を選ぶ</li><li>数式欄に次の式を入力する</li></ol>



<pre class="wp-block-code"><code>=ISNUMBER(SEARCH(CHAR(160),A2))</code></pre>



<ol class="wp-block-list"><li>[書式] ボタンから塗りつぶし色（例: 薄い赤）を選んで [OK] をクリック</li></ol>



<p class="wp-block-paragraph">これで、A列の中でNBSPを含むセルだけが赤く塗られて表示されます。データの行数が多くても、スクロールしながら混入箇所を確認できます。</p>



<h3 class="wp-block-heading"><span id="toc12">複数の見えない空白をまとめてハイライトする</span></h3>



<p class="wp-block-paragraph">NBSPだけでなく、ゼロ幅スペースや全角スペースなど、複数の「見えない空白」を一括で見つけたい場合は、OR関数で条件を組み合わせます。</p>



<pre class="wp-block-code"><code>=OR(ISNUMBER(SEARCH(CHAR(160),A2)),ISNUMBER(SEARCH(UNICHAR(8203),A2)),ISNUMBER(SEARCH(&quot;　&quot;,A2)))</code></pre>



<p class="wp-block-paragraph">NBSP・ゼロ幅スペース・全角スペースのいずれかを含むセルがすべてハイライトされます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>条件付き書式を設定したまま「検索と置換」でNBSPを削除すると、削除されたセルからハイライトが消えていく様子が見えるので、進捗確認にもなります。クレンジングのビフォーアフターを記録に残したいときにも便利です。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc13">作業列に「マーカー」を立てる方法</span></h3>



<p class="wp-block-paragraph">条件付き書式の代わりに作業列を追加して、フラグを立てるやり方もあります。</p>



<pre class="wp-block-code"><code>=IF(ISNUMBER(SEARCH(CHAR(160),A2)),&quot;NBSP有&quot;,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">該当するセルだけ「NBSP有」と表示されるので、オートフィルターで絞り込めば一覧で確認できます。データを別のシートに整理したい場合は、条件付き書式より作業列のほうが扱いやすいです。</p>



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



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



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



<p class="wp-block-paragraph">最もシンプルな方法です。<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 class="wp-block-paragraph">CHAR(160) がNBSPを指定しています。これを空文字 <code>""</code> に置き換えることで削除できます。</p>



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



<p class="wp-block-paragraph">外部データには、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="toc17">パターン3: 制御文字も含めて一括クレンジングする</span></h3>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">処理の流れはこうなっています。</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="toc18">パターン4: すべてのスペースを削除する</span></h3>



<p class="wp-block-paragraph">全角スペース・半角スペース・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 class="wp-block-paragraph">ちょっと長く見えますが、やっていることはシンプルです。内側から順に「制御文字の削除 → 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="toc19">空白の種類と対処関数の早見表</span></h2>



<p class="wp-block-paragraph">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="toc20">ノーブレークスペースをVBAで削除する方法</span></h2>



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



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



<p class="wp-block-paragraph">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="toc22">選択範囲のNBSPを一括削除するマクロ</span></h3>



<p class="wp-block-paragraph">実務で使いやすい、範囲を選択して一括処理するマクロを紹介します。</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 class="wp-block-paragraph">このマクロを実行すると範囲選択のダイアログが表示されます。対象範囲をドラッグで選択すれば、その中のNBSPをまとめて削除できます。</p>



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



<p class="wp-block-paragraph">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="toc24">VBEの起動方法</span></h3>



<p class="wp-block-paragraph">マクロの実行には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>



<h3 class="wp-block-heading"><span id="toc25">WorksheetFunction.TrimではNBSPは削除できない</span></h3>



<p class="wp-block-paragraph">VBAで空白を整形しようとして <code>WorksheetFunction.Trim</code> を試す方がいますが、これではNBSPは削除できません。<code>WorksheetFunction.Trim</code> はExcelのTRIM関数と同じ動作で、半角スペース（コード32）の除去と連続スペースの圧縮のみを行います。NBSPには無効です。</p>



<pre class="wp-block-code"><code>' NG: これではNBSPは消えない
cell.Value = Application.WorksheetFunction.Trim(cell.Value)

' OK: ChrW(160)でNBSPを明示的に指定する
cell.Value = Replace(cell.Value, ChrW(160), &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">VBEの通常の <code>Trim</code> 関数も同様で、NBSPは削除されません。VBAでNBSPを消すには、必ず <code>Replace(文字列, ChrW(160), "")</code> を使ってください。WorksheetFunction.Trim と VBA の Trim 関数の違いは<a href="https://mashukabu.com/vba-worksheetfunction-trim/">VBA WorksheetFunction.Trim の使い方</a>で詳しく解説しています。</p>



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



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



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



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



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



<p class="wp-block-paragraph">片方が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="toc28">COUNTIFやSUMIFで集計がずれるとき</span></h3>



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



<p class="wp-block-paragraph">対処法は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 class="wp-block-paragraph">VBAで空白を一括処理する方法は、<a href="https://mashukabu.com/excel-vba-howto-remove-space/">VBA 文字列の空白を削除する方法まとめ</a>で詳しく解説しています。</p>



<h3 class="wp-block-heading"><span id="toc29">XLOOKUPやXMATCHでNBSPが原因で#N/Aになるとき</span></h3>



<p class="wp-block-paragraph">Microsoft 365を使っている場合、VLOOKUPの代わりに<a href="https://mashukabu.com/excel-function-howto-use-xlookup/">XLOOKUP関数</a>を使っているケースも多いでしょう。XLOOKUPでもNBSPが混入した検索値は「別の文字列」として扱われるため、同じく <code>#N/A</code> になります。</p>



<p class="wp-block-paragraph">対処法はVLOOKUPと同じで、検索値をSUBSTITUTEで包みます。</p>



<pre class="wp-block-code"><code>=XLOOKUP(TRIM(SUBSTITUTE(A2,CHAR(160),&quot; &quot;)),B:B,C:C,&quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">XMATCHも同様です。検索値だけでなく、検索範囲にもNBSPが混入している場合は両方をクレンジングする必要があります。</p>



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



<h3 class="wp-block-heading"><span id="toc30">EXACT関数で&#8221;見た目は同じなのに不一致&#8221;の原因を特定する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-exact/">EXACT関数</a>はアルファベットの大文字・小文字まで区別して2つのセルを比較する関数です。NBSPの診断ツールとしても使えます。</p>



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



<p class="wp-block-paragraph">目視では同じ文字列なのにEXACTが <code>FALSE</code> を返す場合、NBSPか制御文字が混入しています。VLOOKUPが一致しない原因を追うときは、まずEXACTで「本当に同じ文字列か」を確認してください。確認できたら、CODE関数で文字コードを調べると効率よく特定できます。</p>



<p class="wp-block-paragraph">クレンジング後にEXACTで <code>TRUE</code> になったことを確認すれば、削除が完了したかのビフォーアフター検証にも使えます。</p>



<h2 class="wp-block-heading"><span id="toc31">CSV出力時の文字化け対策</span></h2>



<p class="wp-block-paragraph">NBSPが含まれたセルをCSVで保存すると、文字コード 160 が正しく変換されず「?」に化けることがあります。</p>



<p class="wp-block-paragraph">CSVで出力する前にNBSPを削除しておくのが確実な対策です。前述の関数パターンやVBAマクロで事前にクレンジングしてから保存してください。</p>



<h2 class="wp-block-heading"><span id="toc32">検索と置換（Ctrl+H）でNBSPを一括削除する</span></h2>



<p class="wp-block-paragraph">関数や作業列を作らずに、その場でNBSPを消したいときは、Excelの「検索と置換」が便利です。<code>Ctrl + H</code> で置換ダイアログを開けば、選択範囲やシート全体のNBSPをまとめて削除できます。</p>



<p class="wp-block-paragraph">数式を残さず元のセルを直接きれいにできるので、「とにかく今すぐ消したい」というときの即効性ある方法です。</p>



<h3 class="wp-block-heading"><span id="toc33">テンキーがある場合</span></h3>



<p class="wp-block-paragraph">テンキー付きのキーボードなら、検索欄に直接NBSPを入力できます。</p>



<ol class="wp-block-list"><li><code>Ctrl + H</code> で「検索と置換」を開く</li><li>「検索する文字列」の欄にカーソルを置く</li><li><code>Alt</code> キーを押しながら、テンキーで <code>0160</code> と入力する</li><li>「置換後の文字列」は空欄のままにする</li><li>「すべて置換」をクリック</li></ol>



<p class="wp-block-paragraph"><code>Alt</code> + <code>0160</code> は、文字コード160のNBSPを直接入力するショートカットです。見た目には何も入力されていないように見えますが、検索欄にはきちんとNBSPが入っています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>このショートカットは必ずテンキー（キーボード右側の数字キー）を使ってください。キーボード上部の数字キーでは正しく入力できません。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc34">テンキーがない場合</span></h3>



<p class="wp-block-paragraph">ノートパソコンなどテンキーがない場合は、削除したいNBSPをセルからコピーして使います。</p>



<ol class="wp-block-list"><li>NBSPが含まれているセルをダブルクリックして編集状態にする</li><li>NBSPの部分だけをドラッグで選択して <code>Ctrl + C</code> でコピーする</li><li><code>Ctrl + H</code> で「検索と置換」を開く</li><li>「検索する文字列」の欄に <code>Ctrl + V</code> で貼り付ける</li><li>「置換後の文字列」は空欄のままにする</li><li>「すべて置換」をクリック</li></ol>



<p class="wp-block-paragraph">実際のNBSP文字をコピーして使うので、文字コードを覚えていなくても確実に処理できます。NBSPと半角スペースが区別しにくくて不安なときも、この方法なら間違いがありません。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>NBSPを残しつつ前後の余分なスペースだけ整えたい場合は、置換後の文字列に半角スペースを1つ入れて「すべて置換」してください。連続スペースの圧縮は、そのあと<a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>で仕上げると確実です。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc35">Mac版Excelでの注意点</span></h2>



<p class="wp-block-paragraph">Mac版Excelを使っている方は、Windowsとは操作が一部異なります。前述のテンキーを使った <code>Alt + 0160</code> の入力ショートカットは、Mac版Excelでは使えません。</p>



<h3 class="wp-block-heading"><span id="toc36">Macでの代替手段</span></h3>



<p class="wp-block-paragraph">Mac版Excelでは、次のいずれかの方法でNBSPを「検索と置換」で扱えます。</p>



<ol class="wp-block-list"><li><strong>コピペ法を使う</strong>: NBSPを含むセルから該当部分をコピーして、検索ダイアログに貼り付ける（前述の「テンキーがない場合」と同じ手順）</li><li><strong>数式バーで <code>=CHAR(160)</code> を計算して値貼り付け</strong>: 別のセルに <code>=CHAR(160)</code> を入力し、結果を値としてコピーして検索欄に貼り付ける</li><li><strong>関数またはVBAで処理する</strong>: <code>=SUBSTITUTE(A1,CHAR(160),"")</code> を使うか、Mac版でもVBAは動くので前述のマクロをそのまま実行する</li></ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>Mac版Excelの「検索と置換」を開くショートカットは <code>Cmd + H</code> です（Windowsの <code>Ctrl + H</code> 相当）。ダイアログを開いたあとの操作はWindowsとほぼ同じですが、NBSPの直接入力ショートカットは使えない点だけ注意してください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc37">Mac特有のNBSP混入経路</span></h3>



<p class="wp-block-paragraph">macOSでは、<code>Option + Space</code> でNBSPが入力できます。文章の途中で「改行してほしくない箇所」に意図的に入れているユーザーもいるので、Macで作成された文書をコピペするとNBSPが混入しやすい傾向があります。Pages・Keynote・Mailなどのアプリ間コピペでも同様です。</p>



<h2 class="wp-block-heading"><span id="toc38">Power QueryでNBSPを削除する方法</span></h2>



<p class="wp-block-paragraph">外部システムのCSVやデータベースから定期的にデータを取り込む方には、Power Queryでの処理がおすすめです。一度設定しておけば、次回からはデータを更新するだけで自動的にNBSPが削除されます。</p>



<p class="wp-block-paragraph">毎回手作業でクレンジングする手間がなくなるので、繰り返し取り込むデータには特に効果的です。</p>



<h3 class="wp-block-heading"><span id="toc39">GUI操作で削除する手順</span></h3>



<p class="wp-block-paragraph">Power Queryエディター上でメニューを操作するだけで、NBSPを削除できます。</p>



<ol class="wp-block-list"><li>NBSPを削除したい列を選択する</li><li>リボンの [変換] タブ → [値の置換] をクリック</li><li>[詳細オプション] を展開し、[特殊文字を使用して置換] → [特殊文字を挿入] → [改行なしスペース] を選ぶ</li><li>「検索する値」に <code>#(00A0)</code> が自動で挿入される</li><li>「置換後の値」は空欄のまま（削除する場合）にして [OK] をクリック</li></ol>



<p class="wp-block-paragraph"><code>#(00A0)</code> は、Power Queryでの文字コード160（16進数で00A0）の表記です。[特殊文字を挿入] から選べば、この記述を手で打たなくても自動で入力されます。</p>



<h3 class="wp-block-heading"><span id="toc40">M言語のコードで削除する</span></h3>



<p class="wp-block-paragraph">数式バー（詳細エディター）に直接書く場合は、M言語の <code>Text.Replace</code> を使います。</p>



<pre class="wp-block-code"><code>= Text.Replace([列名], Character.FromNumber(160), &quot;&quot;)</code></pre>



<p class="wp-block-paragraph"><code>Character.FromNumber(160)</code> がNBSPを指定しています。これを空文字 <code>""</code> に置き換えることで削除できます。NBSPと前後のスペースをまとめて整えたい場合は、<code>Text.Trim</code> と組み合わせます。</p>



<pre class="wp-block-code"><code>= Text.Trim(Text.Replace([列名], Character.FromNumber(160), &quot; &quot;))</code></pre>



<p class="wp-block-paragraph">NBSPをいったん半角スペースに変換してから <code>Text.Trim</code> で前後の空白を除去する流れです。Excelの関数で言うと <code>=TRIM(SUBSTITUTE(A1,CHAR(160)," "))</code> と同じ考え方です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>Power Queryの <code>Text.Trim</code> は、半角スペースは除去できますがNBSPは除去できません。これはExcelのTRIM関数と同じ落とし穴です。NBSPを消すには、必ず <code>Character.FromNumber(160)</code> を指定した <code>Text.Replace</code> を先にかけてください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc41">複数列をまとめてクレンジングする（Table.TransformColumns）</span></h3>



<p class="wp-block-paragraph">ここまでの手順は、1列ずつ処理する前提で紹介していました。処理対象の列が数十にわたる場合は、<code>Table.TransformColumns</code> を使うと一度の記述でまとめて処理できます。</p>



<pre class="wp-block-code"><code>= Table.TransformColumns(前のステップ, {
    {&quot;列A&quot;, each Text.Replace(_, Character.FromNumber(160), &quot; &quot;)},
    {&quot;列B&quot;, each Text.Replace(_, Character.FromNumber(160), &quot; &quot;)}
})</code></pre>



<p class="wp-block-paragraph">リストに列名と変換式のペアを並べるだけで、複数列に同じ処理を一括適用できます。GUIで1列ずつ [値の置換] を繰り返すより早く仕上がるでしょう。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>第3引数に <code>defaultTransformation</code> を指定すると、リストに列挙していない列にも同じ変換を適用できます。取り込む列数が変動するデータでは、この引数が特に有効です。</p></blockquote>



<p class="wp-block-paragraph">詳しくは<a href="https://mashukabu.com/power-query-m-language-custom-column/">Power QueryのM言語でカスタム列を作る方法</a>を参照してください。</p>



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



<h2 class="wp-block-heading"><span id="toc42">GoogleスプレッドシートでNBSPを削除する方法</span></h2>



<p class="wp-block-paragraph">GoogleスプレッドシートでもNBSPに悩まされることがありますが、対処法はExcelとほとんど同じです。</p>



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



<p class="wp-block-paragraph">Excelとまったく同じ構文で動作します。<code>CHAR(160)</code> でNBSPを指定し、空文字に置き換えるだけです。Excelで使っていた数式をそのままコピーして使えるので、スプレッドシートに移行しても覚え直す必要はありません。</p>



<p class="wp-block-paragraph">注意点もExcelと共通で、TRIM関数だけではNBSPは削除できません。スプレッドシートでも「TRIMで消えない空白」に出くわしたら、まず <code>CHAR(160)</code> を疑ってみてください。</p>



<h3 class="wp-block-heading"><span id="toc43">CLEAN関数ではNBSPを削除できない</span></h3>



<p class="wp-block-paragraph">ExcelのCLEAN関数と同じ落とし穴が、GoogleスプレッドシートのCLEAN関数にも存在します。</p>



<p class="wp-block-paragraph">Google公式ヘルプによると、CLEAN関数が削除するのはASCII範囲（コード0〜31）の印字不可能な文字のみです。NBSP（コード160）はASCII範囲外の文字にあたるため、CLEAN関数では削除されません。</p>



<p class="wp-block-paragraph">「CLEANをかけたのにまだ空白が残っている」と感じたら、CLEAN単体で処理を終えていないか確認してみてください。前述の <code>=SUBSTITUTE(A2, CHAR(160), "")</code> を組み合わせれば、NBSPも含めて確実に除去できます。</p>



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



<h2 class="wp-block-heading"><span id="toc44">Google Apps ScriptでNBSPを一括削除する</span></h2>



<p class="wp-block-paragraph">関数だけでは対応しきれないほど行数が多いデータには、Google Apps Script（GAS）でのバッチ処理が向いています。GASはGoogleスプレッドシートに標準搭載されているスクリプト環境なので、追加のインストールは要りません。</p>



<h3 class="wp-block-heading"><span id="toc45">TextFinderクラスで置換する</span></h3>



<p class="wp-block-paragraph"><code>TextFinder</code> クラスを使うと、シート全体や指定範囲を対象に文字列を検索・置換できます。NBSPの削除も数行のコードで書けます。</p>



<pre class="wp-block-code"><code>function removeNbsp() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var finder = sheet.createTextFinder(String.fromCharCode(160));
  finder.replaceAllWith('');
}</code></pre>



<p class="wp-block-paragraph"><code>String.fromCharCode(160)</code> は、文字コード160番の文字を生成します。VBAの <code>ChrW(160)</code> やExcelの <code>CHAR(160)</code> と同じ考え方だと捉えてください。</p>



<h3 class="wp-block-heading"><span id="toc46">正規表現でまとめて処理する</span></h3>



<p class="wp-block-paragraph">NBSPと他の空白文字を一度に整えたい場合は、<code>useRegularExpression(true)</code> を指定します。</p>



<pre class="wp-block-code"><code>function normalizeWhitespace() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var pattern = '[' + String.fromCharCode(160) + '\s]+';
  var finder = sheet.createTextFinder(pattern).useRegularExpression(true);
  finder.replaceAllWith(' ');
}</code></pre>



<p class="wp-block-paragraph">NBSPを含む連続した空白文字を、まとめて半角スペース1つに置き換える処理です。VBAのマクロと同じ考え方で、シート全体を一括クレンジングできます。</p>



<p class="wp-block-paragraph">詳しくは<a href="https://mashukabu.com/spreadsheet-gas-getting-started-recipes/">Google Apps Script入門レシピ</a>を参照してください。</p>



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



<h2 class="wp-block-heading"><span id="toc47">ピボットテーブルでNBSPが引き起こす集計エラーと対策</span></h2>



<p class="wp-block-paragraph">NBSPの影響はVLOOKUPだけにとどまりません。ピボットテーブルでも深刻な問題を引き起こします。</p>



<h3 class="wp-block-heading"><span id="toc48">起きやすい3つの症状</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>症状</th><th>原因</th><th>見分け方</th></tr></thead><tbody><tr><td>同じ値なのに別々の行に集計される</td><td>NBSPありとなしが「別の文字列」として扱われる</td><td>ピボットの行ラベルに似た値が2行並ぶ</td></tr><tr><td>数値フィールドで「グループ化」できない</td><td>NBSPが混入したセルが「文字列」と判定される</td><td>「選択対象をグループ化することはできません」エラー</td></tr><tr><td>件数が合わない</td><td>見た目は同じ値なのに個別に集計される</td><td>COUNT/SUMの合計が元データと一致しない</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc49">よくある発生パターン</span></h3>



<p class="wp-block-paragraph">Webからコピーした都道府県名・商品名・担当者名にNBSPが入っていると、ピボットテーブルは「東京」と「東京（NBSP付き）」を別々の項目として集計します。行ラベルに「東京」が2行並び、それぞれに異なる集計値が表示される状態になります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>WARNING</strong></p><p>ピボットテーブルを更新しても直りません。元データのNBSPを除去してからテーブルを再作成（または更新）する必要があります。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc50">対策：ピボット作成前にクレンジングする</span></h3>



<p class="wp-block-paragraph">ピボットテーブルの元データ列にクレンジング済みの作業列を追加し、その列をピボットの行・列・フィルターフィールドに使います。</p>



<p class="wp-block-paragraph"><strong>手順</strong></p>



<ol class="wp-block-list"><li>元データの隣に作業列（例: D列）を追加する</li><li>作業列に次の数式を入力する</li></ol>



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



<ol class="wp-block-list"><li>作業列全体を<strong>値として貼り付け</strong>（<code>Ctrl+C</code> → <code>Alt+E+S+V+Enter</code>）して数式を固定する</li><li>ピボットテーブルの参照範囲を元の列から作業列に変更して再作成する</li></ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>定期的にデータを更新している場合は、前述の「Power QueryでNBSPを削除する方法」を使うと、更新のたびに自動クレンジングが走るため作業列が不要になります。ピボットテーブルの元データソースをPower Queryの出力テーブルに変更しておくのがおすすめです。</p></blockquote>



<p class="wp-block-paragraph">ピボットテーブルの基本操作は<a href="https://mashukabu.com/excel-pivot-table-guide/">Excelピボットテーブルの使い方</a>で解説しています。</p>



<h2 class="wp-block-heading"><span id="toc51">Excel 365のREGEXREPLACE関数でNBSPを削除する</span></h2>



<p class="wp-block-paragraph">Microsoft 365では正規表現関数（REGEXREPLACE・REGEXTEST・REGEXEXTRACT）が追加されました。これを使うと、NBSPを含む複数種類の空白文字を1つの数式でまとめて削除できます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>REGEXREPLACE関数はMicrosoft 365（サブスクリプション版）専用です。Excel 2021・2019などの永続ライセンス版では使用できません。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc52">NBSPを正規表現で削除する数式</span></h3>



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



<p class="wp-block-paragraph"><code>x{00A0}</code> はNBSPのUnicodeコードポイント（U+00A0）を正規表現で指定する書き方です。これを空文字 <code>""</code> に置換することでNBSPを削除できます。</p>



<h3 class="wp-block-heading"><span id="toc53">NBSPと半角スペースをまとめて整形する</span></h3>



<p class="wp-block-paragraph">通常の半角スペースも一緒に処理する場合は、文字クラス <code>[...]</code> で両方を指定します。</p>



<pre class="wp-block-code"><code>=TRIM(REGEXREPLACE(A1,&quot;[x{00A0} ]+&quot;,&quot; &quot;))</code></pre>



<p class="wp-block-paragraph">NBSPと半角スペースの「1個以上の連続」をまとめて半角スペース1つに置換し、TRIM関数で前後を整えます。</p>



<h3 class="wp-block-heading"><span id="toc54">SUBSTITUTE式との使い分け</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>方法</th><th>対応バージョン</th><th>書きやすさ</th><th>柔軟性</th></tr></thead><tbody><tr><td><code>SUBSTITUTE(A1,CHAR(160),"")</code></td><td>すべてのExcel</td><td>高い</td><td>1種類ずつ指定</td></tr><tr><td><code>REGEXREPLACE(A1,"x{00A0}","")</code></td><td>Microsoft 365のみ</td><td>やや難しい</td><td>複数パターンを1式で処理可</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">日常的な用途ではSUBSTITUTE式で十分です。複数種類の特殊文字を一度に処理したい場合や、正規表現に慣れている場合はREGEXREPLACEが有効です。</p>



<p class="wp-block-paragraph">REGEXREPLACE関数のその他の使い方は<a href="https://mashukabu.com/excel-function-howto-use-regexreplace/">REGEXREPLACE関数の使い方</a>で解説しています。</p>



<h2 class="wp-block-heading"><span id="toc55">LAMBDA関数でNBSP除去のオリジナル関数を作る</span></h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>対応バージョン</strong>: LAMBDA関数はMicrosoft 365（サブスクリプション版）で利用できます。買い切り版でも最新のExcel 2024（Mac版含む）には搭載されていますが、Excel 2021・2019など、それより前の永続ライセンス版では使用できません。</p></blockquote>



<p class="wp-block-paragraph"><code>SUBSTITUTE(CLEAN(...),CHAR(160),"")</code> のような長い数式を、毎回セルに書き直すのは手間がかかります。</p>



<p class="wp-block-paragraph">LAMBDA関数を使えば、この処理を自分だけのオリジナル関数として登録できます。一度作っておけば、VBAを使わずに <code>=REMOVENBSP(A1)</code> のような感覚で呼び出せるようになります。</p>



<h3 class="wp-block-heading"><span id="toc56">手順（Windows版）</span></h3>



<ol class="wp-block-list"><li>[数式] タブ → [名前の管理] をクリック</li><li>[新規作成] を選ぶ</li><li>「名前」欄に <code>REMOVENBSP</code> と入力する</li><li>「参照範囲」欄に次の数式を入力する</li></ol>



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



<ol class="wp-block-list"><li>[OK] をクリックして保存する</li></ol>



<p class="wp-block-paragraph">登録が終われば、あとは普通の関数と同じように使えます。</p>



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



<p class="wp-block-paragraph">NBSP・制御文字・前後の余分なスペースをまとめて除去した結果が返ってきます。</p>



<h3 class="wp-block-heading"><span id="toc57">手順（Mac版）</span></h3>



<p class="wp-block-paragraph">Mac版Excelでは、メニューの名称が少し異なる点に注意してください。[数式] タブ → [名前の定義] から同様の設定が可能です。手順そのものはWindows版とほぼ同じなので、迷うことは少ないでしょう。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>ブックに保存された名前付き関数は、そのブックを開いている限りいつでも呼び出せます。VBAのマクロと違って「マクロ有効ブック（.xlsm）」として保存する必要がない点も扱いやすいポイントです。</p></blockquote>



<p class="wp-block-paragraph">詳しくは<a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA関数の使い方</a>を参照してください。</p>



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



<h2 class="wp-block-heading"><span id="toc58">ノーブレークスペース以外の「見えない空白」の見分けと削除</span></h2>



<p class="wp-block-paragraph">NBSPがいちばん有名ですが、Webや海外システムから取り込んだデータには <strong>NBSP以外にも見えない空白文字</strong> が混入することがあります。「CHAR(160)を消しても、まだVLOOKUPが一致しない」というときは、これらを疑ってみてください。</p>



<h3 class="wp-block-heading"><span id="toc59">代表的な見えない空白文字の一覧</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>文字名</th><th>Unicode</th><th>10進コード</th><th>主な出現箇所</th></tr></thead><tbody><tr><td>ノーブレークスペース（NBSP）</td><td>U+00A0</td><td>160</td><td>Webコピー・Word貼付</td></tr><tr><td>ゼロ幅スペース</td><td>U+200B</td><td>8203</td><td>Web HTML・PDF抽出</td></tr><tr><td>ゼロ幅非接合子（ZWNJ）</td><td>U+200C</td><td>8204</td><td>アラビア語・ペルシャ語データ</td></tr><tr><td>狭い改行なしスペース</td><td>U+202F</td><td>8239</td><td>フランス語ロケールの数値区切り</td></tr><tr><td>全角スペース</td><td>U+3000</td><td>12288</td><td>日本語入力</td></tr><tr><td>BOM（バイトオーダーマーク）</td><td>U+FEFF</td><td>65279</td><td>UTF-8 CSVの先頭セル</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc60">UNICHAR関数で指定して削除する</span></h3>



<p class="wp-block-paragraph">文字コード255までしか扱えないCHAR関数では、ゼロ幅スペース（コード8203）などは指定できません。Excel 2013以降は <strong>UNICHAR関数</strong> を使えば、Unicode全範囲を指定できます。</p>



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



<p class="wp-block-paragraph">複数種類をまとめて削除したい場合は、SUBSTITUTE関数をネストします。</p>



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



<p class="wp-block-paragraph">内側から「NBSP削除 → ゼロ幅スペース削除 → BOM削除」と順番に処理しています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>「何の文字が入っているかさっぱりわからない」というときは、<code>=UNICODE(MID(A1,N,1))</code> を使うとUnicode値で確認できます。CODE関数は255までしか返せませんが、UNICODE関数は8203などの大きなコードも正しく取得できます。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc61">Microsoft 365なら正規表現で一括処理する</span></h3>



<p class="wp-block-paragraph">Microsoft 365の<a href="https://mashukabu.com/excel-function-howto-use-regexreplace/">REGEXREPLACE関数</a>なら、複数種類の見えない空白を1つの数式で削除できます。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A1,&quot;[x{00A0}x{200B}x{200C}x{202F}x{FEFF}]&quot;,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">文字クラス <code>[...]</code> の中にUnicodeコードポイントを並べることで、該当する文字すべてを空文字に置換します。複数システムからデータを集約する業務では、この一行で大半の見えない空白を処理できます。</p>



<h2 class="wp-block-heading"><span id="toc62">NBSPを最初から混入させない3つの予防策</span></h2>



<p class="wp-block-paragraph">削除方法を知っておくことも大事ですが、そもそも混入させない習慣をつけると整形作業の手間が減ります。</p>



<h3 class="wp-block-heading"><span id="toc63">予防策1: テキストエディタ経由でペーストする</span></h3>



<p class="wp-block-paragraph">クリップボードにHTMLが乗っている状態のままExcelに貼ると、NBSPが一緒に入ります。ChromeやTeamsからコピーした内容は、一度メモ帳（Windows）やテキストエディット（Macのプレーンテキストモード）に貼り付けてから再コピーしてください。HTML情報が取り除かれて、NBSPのない純粋なテキストになります。</p>



<h3 class="wp-block-heading"><span id="toc64">予防策2: 値のみ貼り付け（Ctrl+Shift+V / Alt+E+S+V）を習慣にする</span></h3>



<p class="wp-block-paragraph">Excelのショートカット <code>Alt+E+S+V+Enter</code>（「形式を選択して貼り付け」→「値」）でペーストすると、書式やHTMLを除いたテキストだけが入ります。Ctrl+Vの代わりにこの操作を習慣にするだけで、Webや他アプリからの混入をかなり防げます。Googleスプレッドシートでは <code>Ctrl+Shift+V</code> が値のみ貼り付けのショートカットです。</p>



<h3 class="wp-block-heading"><span id="toc65">予防策3: Power Queryを取り込み窓口にする</span></h3>



<p class="wp-block-paragraph">定期的にCSVや外部データを取り込む業務なら、Power Queryを入口にして自動クレンジングを組み込むのが根本的な解決策です。一度設定しておけば、毎回手動で整形する必要がなくなります。具体的な設定方法は前述の「Power QueryでNBSPを削除する方法」を参照してください。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>入力規則（データの入力規則）ではNBSPの混入を防ぐことはできません。入力規則はキーボードからの直接入力を制限する機能であり、貼り付け操作には無力です。予防策は「貼り付け方法の工夫」で対応してください。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc67">Q. TeamsやSlackからコピペするとNBSPが入りますか？</span></h3>



<p class="wp-block-paragraph">入りやすい傾向があります。TeamsとSlackはChromiumベースのレンダリングを使っており、チャットのテキストをコピーするとHTMLが同伴することがあります。確認するには <code>=CODE(LEFT(A1,1))</code> で文字コードを見てください。160が出ればNBSPが混入しています。回避するには「テキストエディタ経由でペースト」か「値のみ貼り付け（Alt+E+S+V）」を使うのが確実です。</p>



<h3 class="wp-block-heading"><span id="toc68">Q. EXACT関数でFALSEなのに目視では同じ文字列です。なぜですか？</span></h3>



<p class="wp-block-paragraph">NBSPか制御文字が混入している可能性が高いです。<code>=CODE(MID(A1,N,1))</code> でN番目の文字のコードを確認し、160や制御文字のコード（0〜31）が出たら特殊文字が隠れています。<code>=SUBSTITUTE(A1,CHAR(160),"")</code> で削除してから再度EXACTで確認してください。</p>



<h3 class="wp-block-heading"><span id="toc69">Q. XLOOKUPでも#N/Aが出ます。VLOOKUPと同じ対処法ですか？</span></h3>



<p class="wp-block-paragraph">はい、同じです。XLOOKUP の検索値を <code>TRIM(SUBSTITUTE(A2,CHAR(160)," "))</code> で包んでください。<code>=XLOOKUP(TRIM(SUBSTITUTE(A2,CHAR(160)," ")),B:B,C:C,"該当なし")</code> のように記述します。XMATCHも同様に検索値のクレンジングが必要です。</p>



<h3 class="wp-block-heading"><span id="toc70">Q. Ctrl+Vで貼り付けるたびにNBSPが入ります。防ぐ方法はありますか？</span></h3>



<p class="wp-block-paragraph">「値のみ貼り付け」（<code>Alt+E+S+V+Enter</code>）をCtrl+Vの代わりに使う習慣が最も手軽な対策です。または、貼り付け前にメモ帳を経由してHTMLを除去する方法もあります。定期的に取り込むデータであれば、Power Queryをデータ入口にして自動クレンジングを設定しておくと根本的に解決できます。</p>



<h3 class="wp-block-heading"><span id="toc71">Q. CODE関数で160と出ました。これは必ずNBSPですか？</span></h3>



<p class="wp-block-paragraph">はい、文字コード160はNBSPです。確実に削除するには <code>=SUBSTITUTE(A1,CHAR(160),"")</code> を使ってください。160以外の文字コードが出た場合は、前述の「空白の種類と対処関数の早見表」を参照してください。</p>



<h3 class="wp-block-heading"><span id="toc72">Q. SUBSTITUTE+CHAR(160)を入れたのに、VLOOKUPの不一致が直りません。</span></h3>



<p class="wp-block-paragraph">NBSP以外にも見えない文字が混入している可能性があります。次の組み合わせ式で、NBSPと制御文字を一括除去してください。</p>



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



<p class="wp-block-paragraph">それでも解決しない場合は、<code>=CODE(MID(A1,N,1))</code> で各文字の文字コードを1文字ずつ調べ、想定外の値がないか確認してください。</p>



<h3 class="wp-block-heading"><span id="toc73">Q. スマートフォンのメモアプリからコピーするとNBSPが入りますか？</span></h3>



<p class="wp-block-paragraph">アプリによって異なりますが、iOSのメモ帳・Slackなど一部のアプリはNBSP（文字コード160）を使って単語間の折り返しを制御しています。「TRIMで消えない」と感じたら、<code>=CODE(LEFT(A1,1))</code> で文字コードを確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc74">Q. Power QueryのText.TrimでNBSPも消えますか？</span></h3>



<p class="wp-block-paragraph">消えません。Power QueryのText.TrimはExcelのTRIM関数と同様に半角スペース（コード32）の前後除去のみ対応しており、NBSPには無効です。前述の「Power QueryでNBSPを削除する方法」に記載のText.Replaceを先にかけてください。</p>



<h3 class="wp-block-heading"><span id="toc75">Q. 「検索と置換」で削除したのに、まだ空白があります。</span></h3>



<p class="wp-block-paragraph">複数種類の空白が混在している可能性があります。全角スペース（コード12288）やタブ（コード9）が残っている場合は、それぞれ別途置換が必要です。一度に全種類を処理したい場合は、前述の「すべての空白を一括削除するマクロ」を使うと確実です。</p>



<h3 class="wp-block-heading"><span id="toc76">Q. NBSP以外にも「見えない空白」はありますか？</span></h3>



<p class="wp-block-paragraph">はい、あります。代表的なのはゼロ幅スペース（Unicode U+200B、コード8203）で、Webからのコピーで混入することが多いです。CHAR関数は255までしか対応しないため、UNICHAR関数を使って <code>=SUBSTITUTE(A1,UNICHAR(8203),"")</code> で削除します。詳しくは「ノーブレークスペース以外の『見えない空白』の見分けと削除」の章を参照してください。</p>



<h3 class="wp-block-heading"><span id="toc77">Q. Mac版ExcelでもAlt+0160は使えますか？</span></h3>



<p class="wp-block-paragraph">使えません。Mac版Excelにはテンキーによる文字コード直接入力のショートカットがないため、「コピペ法」か「関数による削除」を使ってください。詳しくは「Mac版Excelでの注意点」の章を参照してください。</p>



<h3 class="wp-block-heading"><span id="toc78">Q. LAMBDA関数でNBSP削除の自作関数を作れますか？</span></h3>



<p class="wp-block-paragraph">はい、作れます。[数式]タブの[名前の管理]から <code>=LAMBDA(text, TRIM(CLEAN(SUBSTITUTE(text,CHAR(160)," "))))</code> を <code>REMOVENBSP</code> という名前で登録すれば、<code>=REMOVENBSP(A1)</code> のように通常の関数と同じ感覚で呼び出せます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>対応バージョン</strong>: LAMBDA関数はMicrosoft 365（サブスクリプション版）で利用できます。買い切り版でも最新のExcel 2024（Mac版含む）には搭載されていますが、Excel 2021・2019など、それより前の永続ライセンス版では使用できません。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc79">Q. Google Apps ScriptでNBSPを削除できますか？</span></h3>



<p class="wp-block-paragraph">できます。<code>TextFinder</code> クラスの <code>createTextFinder</code> と <code>replaceAllWith</code> を使えば、シート全体を対象に数行のコードでNBSPを一括削除できます。正規表現を有効にすれば、NBSPと他の空白文字をまとめて処理することも可能です。</p>



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph">外部からデータを取り込む機会が多い方は、「CHAR(160)」というキーワードを覚えておくと安心です。ぜひ活用してみてください。</p>



<h3 class="wp-block-heading"><span id="toc81">関連記事</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="toc82">関数一覧</span></h3>



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



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



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



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