Excelのセルに入力したデータが正常に見えているのに、関数の結果がおかしい・VLOOKUPが一致しない・CSVに書き出したら文字化けした——こうした謎のトラブルの犯人が「表示されない文字コード」であることがあります。
目に見えないため発見しにくいですが、原因と対処法を知っていれば確実に取り除けます。
この記事では、表示されない文字コードの種類・確認方法・削除手順をまとめて解説します。
表示されない文字コードとは
コンピュータが扱う文字には、画面に描画される「印字可能文字」と、描画されない「制御文字(非印字文字)」の2種類があります。
制御文字は本来、データの区切りや通信制御のための仕様です。
しかしWebページや外部システムからExcelにデータを貼り付けたとき、これらの文字が一緒に紛れ込むことがあります。
セルを見ると空白のように見えますが、実際にはデータが含まれているため、LEN関数で文字数を調べると予想より多い数が返ります(Microsoft サポート「CLEAN 関数」)。
代表的な表示されない文字コード一覧
| 文字コード | 名称 | 主な発生経路 |
|---|---|---|
| 0〜31(ASCII) | 制御文字全般(改行・タブ等) | 外部システムからのデータ取込 |
| 10 | 改行(LF) | Webからのコピー・CSV取込 |
| 13 | 改行(CR) | Windowsの改行コード |
| 9 | 水平タブ | TSVファイル・Webからのコピー |
| 160 | ノーブレークスペース( ) | Webページからのコピー |
| 127 | DEL(削除文字) | 外部システムのデータ |
| 129・141・143・144・157 | Unicodeの非印字文字 | 特定アプリのエクスポートデータ |
| 8203 | ゼロ幅スペース(ZWSP) | Webページ・一部のメールソフト |
特にコード160(ノーブレークスペース)とコード8203(ゼロ幅スペース)は、Webページからコピーしたデータに紛れやすく、TRIM関数では除去できないため注意が必要です(DataCamp「CLEAN() Function in Excel」)。
非印字文字が引き起こすトラブル
VLOOKUP・MATCHで一致しない(文字列の内容は同じでも非印字文字で異なる文字列と判定される)LEN関数の結果が想定より多い(例:「東京」が長さ3と返る)- CSVで書き出したとき、改行コードがレコードを分割してしまう
- 数値として扱えず
SUM集計ができない - 検索・置換がヒットしない
表示されない文字を確認する方法
CODE関数でコードを調べる
先頭または末尾の1文字のコードを調べられます。
=CODE(LEFT(A1,1)) ←先頭1文字のコードを確認
=CODE(RIGHT(A1,1)) ←末尾1文字のコードを確認
返った数値がリスト上の非印字文字コードと一致していれば、その文字が紛れ込んでいます。
LEN関数で文字数を確認する
=LEN(A1)
目視で数えた文字数と一致しない場合は、非印字文字が含まれている可能性があります。
非印字文字を削除する方法
①CLEAN関数(ASCIIコード0〜31を削除)
最もシンプルな方法です。
ASCIIコード0〜31の制御文字をまとめて除去できます(Microsoft サポート「CLEAN 関数」)。
=CLEAN(A1)
ただし、コード127・129・141・143・144・157のUnicode非印字文字や、コード160(ノーブレークスペース)はCLEAN関数だけでは除去できません。
②TRIM関数と組み合わせる(余分なスペースも同時除去)
=TRIM(CLEAN(A1))
CLEAN関数で制御文字を除去した後、TRIM関数で前後の余分なスペースや単語間の重複スペースを除去します。
データ整理の基本的な組み合わせです。
③SUBSTITUTE関数(特定コードを指定して削除)
CLEAN関数で除去できない文字には、SUBSTITUTE関数とCHAR関数を組み合わせます。
ノーブレークスペース(コード160)を除去する場合:
=SUBSTITUTE(A1,CHAR(160),"")
複数の非印字文字をまとめて除去する場合(CLEAN・TRIM・SUBSTITUTE の組み合わせ):
=TRIM(CLEAN(SUBSTITUTE(A1,CHAR(160),"")))
特定のUnicode非印字文字(コード127など)を除去する場合も、CHAR(127)のように指定できます(MrExcel「How can I remove non-printing characters from a dataset?」)。
④検索・置換で対話的に削除する
- 問題のセルで非印字文字を含む部分を選択して
Ctrl+Cでコピーする Ctrl+Hで「検索と置換」を開く- 「検索する文字列」欄に
Ctrl+Vで貼り付ける - 「置換後の文字列」は空白のままにして「すべて置換」をクリックする
ただし、非印字文字の種類によってはこの方法が機能しないこともあります(ExcelTips「Getting Rid of Non-Printing Characters Intelligently」)。
文字コードのミスマッチによる文字化け
表示されない文字コードとは別に、文字コードの種類の違いが原因で文字そのものが読めなくなる「文字化け」も発生します。
特にCSVファイルでよく起こります。
主な原因:
ExcelはCSVファイルをデフォルトで「Shift-JIS」として開こうとします。
一方、最近のシステムが出力するCSVは「UTF-8」形式が主流です。
この不一致により、日本語が文字化けして表示されます。
対処方法(ExcelでUTF-8のCSVを正しく開く):
- 「データ」タブ→「テキストまたはCSVから」を選択する
- ファイルを指定してインポートを開始する
- 文字コードの選択欄で「65001:Unicode(UTF-8)」を選択する
- 「読み込み」をクリックする
この方法で文字コードを指定して読み込むことで、文字化けを回避できます。
まとめ
Excelの表示されない文字コードには、大きく2種類あります。
一つは目には見えないが存在する「制御文字・非印字文字」で、外部からのデータ取込時に紛れ込みます。
もう一つは文字コードの種類(UTF-8・Shift-JIS等)の違いによる「文字化け」です。
前者はCLEAN・TRIM・SUBSTITUTE関数の組み合わせで除去でき、後者はデータ取込時に文字コードを指定することで防げます。
VLOOKUPが一致しない・LEN関数の結果が合わないといった原因不明のトラブルに直面したときは、まず非印字文字の混入を疑ってみましょう。
参考情報
この記事で参照した情報源
一次資料・公式ドキュメント
- Microsoft サポート「CLEAN 関数」 – Microsoft公式(CLEANで除去できないコード一覧を含む)
信頼できる二次資料
- DataCamp「CLEAN() Function in Excel: Remove Non-Printable Characters」 – TRIM・SUBSTITUTE との組み合わせ・コード160の詳細
- MrExcel「How can I remove non-printing characters from a dataset?」 – コード127・160・8203への対処法
- ExcelTips「Getting Rid of Non-Printing Characters Intelligently」 – 検索・置換による除去方法

コメント