【Excel】エクセルの文字コードを確認・変更・変換する方法(CSV取り込み時の文字コード・改行コードの置換も)
エクセルでCSVファイルを開いたとき、文字化けが起きて困った経験はないでしょうか。その原因のほとんどは、文字コードの不一致にあります。UTF-8やShift-JIS、BOMの有無など、文字コードにはさまざまな種類があり、エクセルの設定と合っていないと正しく表示されません。
また、改行コードの違いによってデータが意図しない形で読み込まれるケースも少なくありません。本記事では、エクセルの文字コードを確認・変更・変換する方法を、CSV取り込み時の対処法や改行コードの置換方法も含めてわかりやすく解説していきます。
Windows・Macどちらのユーザーにも役立つ内容となっていますので、ぜひ最後までご覧ください。
エクセルの文字コードを確認する方法
それではまず、エクセルで扱うファイルの文字コードを確認する方法について解説していきます。
エクセル自体にはファイルの文字コードを直接表示する機能がないため、いくつかの手段を組み合わせて確認する必要があります。代表的な方法は以下の3つです。
メモ帳(テキストエディタ)で文字コードを確認する
Windowsのメモ帳を使えば、CSVファイルなどの文字コードを手軽に確認できます。手順は以下のとおりです。
1. 確認したいCSVファイルを右クリックする
2. 「プログラムから開く」→「メモ帳」を選択する
3. メモ帳が開いたら、「ファイル」→「名前を付けて保存」をクリックする
4. 保存ダイアログ下部の「文字コード」欄で現在の文字コードを確認できる
ここに表示される文字コードが「UTF-8」「ANSI(Shift-JIS)」「Unicode」などであることを確認しましょう。Windows環境では「ANSI」と表示されている場合がShift-JISに相当します。
VSCodeや秀丸などの高機能エディタで確認する
より正確に文字コードを確認したい場合は、Visual Studio Code(VSCode)や秀丸エディタなどの高機能テキストエディタを使うのがおすすめです。
VSCodeであれば、ファイルを開いた際に画面右下のステータスバーに文字コードが表示されます。「UTF-8」「Shift JIS」「EUC-JP」などと明記されるため、一目で判別できるでしょう。BOMの有無(UTF-8 with BOMなど)も正確に確認できるため、CSVのトラブル解決に非常に役立ちます。
CHAR関数・CODE関数を使って文字コードを確認する
エクセル内で特定の文字がどのコード番号に対応しているかを調べたい場合は、CODE関数とCHAR関数を活用できます。
CODE関数の書式:=CODE(文字列)
例:=CODE(“A”) → 65(ASCIIコードでのAの値)
CHAR関数の書式:=CHAR(数値)
例:=CHAR(65) → A
これらの関数はASCIIおよびShift-JISの文字コードに対応しています。特定の文字がどのコードに割り当てられているかを確認したいときに便利な関数です。
エクセルの文字コードを変更・変換する方法
続いては、文字コードを変更・変換する具体的な方法を確認していきます。
文字化けが起きているCSVをエクセルで正しく開くためには、文字コードを適切な形式に変換する必要があります。主な方法を3つ紹介します。
メモ帳で文字コードを変換して保存する
最も手軽な方法は、Windowsのメモ帳を使って文字コードを変換する方法です。
1. 変換したいCSVファイルをメモ帳で開く
2. 「ファイル」→「名前を付けて保存」をクリックする
3. 保存ダイアログの「文字コード」プルダウンで目的のコード(例:UTF-8、ANSIなど)を選択する
4. ファイル名を指定して「保存」をクリックする
5. 変換後のファイルをエクセルで開き直す
エクセルで文字化けなく開きたい場合は、「ANSI」(Shift-JIS)形式で保存するのが基本です。UTF-8で保存するとエクセルが文字化けを起こすことがあるため注意が必要です。
Power QueryでCSVの文字コードを指定して取り込む
エクセルのPower Query機能を使えば、CSVのインポート時に文字コードを指定することができます。この方法はUTF-8のCSVをエクセルに取り込む際に特に有効な方法です。
1. 「データ」タブ→「データの取得」→「テキストまたはCSVから」を選択する
2. ファイルを選択すると、プレビュー画面が表示される
3. プレビュー上部の「ファイルオリジン」プルダウンで文字コードを選択する(例:65001:UTF-8)
4. データが正しく表示されていることを確認し、「読み込み」または「データの変換」をクリックする
Power Queryを使うことで、文字化けを防ぎながらCSVを安全に取り込めます。定期的にCSVを取り込む業務がある場合は、ぜひ活用してみてください。
VBAマクロで文字コードを変換する
大量のファイルをまとめて変換したい場合や、自動化したい場合はVBAマクロが便利です。以下はShift-JISからUTF-8に変換する基本的なコード例です。
Sub ConvertEncoding()
Dim objStream As Object
Set objStream = CreateObject(“ADODB.Stream”)
objStream.Open
objStream.Charset = “Shift_JIS”
objStream.LoadFromFile “C:\test\input.csv”
Dim strText As String
strText = objStream.ReadText
objStream.Close
objStream.Open
objStream.Charset = “UTF-8”
objStream.WriteText strText
objStream.SaveToFile “C:\test\output.csv”, 2
objStream.Close
End Sub
ADODB.Streamオブジェクトを使うことで、文字コードを指定してファイルを読み書きできます。ファイルパスやCharsetの値を変更すれば、さまざまな形式への変換に応用できるでしょう。
CSV取り込み時の文字コードと改行コードの対処法
続いては、CSV取り込み時に発生しやすい文字コードと改行コードのトラブルへの対処法を確認していきます。
CSVファイルを正しく扱うためには、文字コードだけでなく改行コードの種類についても理解しておく必要があります。
改行コードの種類と確認方法
改行コードには主に以下の3種類があり、OS環境によって使われるコードが異なります。
| 改行コード | 名称 | 主な使用環境 |
|---|---|---|
| CR+LF(\r\n) | CRLF | Windows |
| LF(\n) | LF | Linux / Mac(新) |
| CR(\r) | CR | Mac(旧) |
改行コードが異なると、CSVをエクセルで開いた際に1行のデータが複数行に分かれて表示されたり、逆に複数行が1行にまとまって表示されたりするトラブルが発生します。
エクセルで改行コードを置換する方法
エクセルのセル内に混入した改行コードを置換する場合は、Ctrl+Hの置換機能とCHAR関数を組み合わせる方法が有効です。
1. Ctrl+Hで「検索と置換」ダイアログを開く
2. 「検索する文字列」欄にCtrl+Jを入力する(改行コードLFに対応)
3. 「置換後の文字列」欄は空白のままにする(改行を削除する場合)
4. 「すべて置換」をクリックする
また、数式で改行を除去したい場合はSUBSTITUTE関数とCHAR関数を組み合わせる方法があります。
=SUBSTITUTE(A1,CHAR(10),””)
→ セルA1内のLF改行コードをすべて削除する
BOM付きUTF-8とBOMなしUTF-8の違いと対処法
UTF-8にはBOM(Byte Order Mark)付きとBOMなしの2種類があります。エクセルはBOM付きUTF-8であれば自動的に文字コードを認識しますが、BOMなしUTF-8のCSVを開くと文字化けが発生することがあります。
エクセルでUTF-8のCSVを文字化けなく開くためには、BOM付きUTF-8(UTF-8 with BOM)で保存するか、Power Queryを使ってファイルオリジンを65001(UTF-8)に指定して取り込む方法が最も確実です。
メモ帳でファイルを保存する際に「UTF-8 BOM付き」を選択するか、VSCodeで「UTF-8 with BOM」として保存することでBOMを付加できます。
文字コード変換に関するよくあるトラブルと解決策
続いては、文字コード変換に関してよく起きるトラブルと、その解決策を確認していきます。
CSVを開くと文字化けする場合の対処法
CSVをダブルクリックで開いたときに文字化けが発生する場合、最も多い原因はUTF-8(BOMなし)のファイルをエクセルが正しく認識できていないことです。
この場合の対処手順は以下のとおりです。
方法1:Power Queryで取り込む(「データ」→「テキストまたはCSVから」→ファイルオリジンを65001に設定)
方法2:メモ帳でファイルを開き、「名前を付けて保存」でUTF-8 BOM付きに変換してから再度エクセルで開く
方法3:テキストファイルウィザードを使い、エンコードを手動指定して取り込む
日本語・全角文字が正しく表示されない場合
日本語の全角文字が豆腐(□)や「???」で表示される場合は、Shift-JISとUTF-8の混在が原因であることが多いです。
特に、複数のシステムからエクスポートしたCSVを結合して使用する際に起きやすいトラブルです。各ファイルの文字コードをVSCodeや秀丸エディタで確認し、統一してから結合するようにしましょう。
保存後に文字コードが変わってしまう場合
エクセルでCSVを編集して上書き保存すると、自動的にShift-JIS(ANSI)に変換されて保存されることがあります。これはエクセルの仕様によるものです。
UTF-8形式を維持したまま保存したい場合は、VBAマクロを使ってADODB.Streamで書き出すか、エクセルでの編集を避けてVSCodeなどのエディタで編集する運用にするとよいでしょう。
まとめ
本記事では、【Excel】エクセルの文字コードを確認・変更・変換する方法について、CSV取り込み時の文字コード対処法や改行コードの置換方法も含めて詳しく解説しました。
文字コードのトラブルはCSVを扱う業務では避けて通れない問題ですが、Power QueryやVBAマクロを活用することで、ほとんどのケースに対応可能です。まずはメモ帳やVSCodeで文字コードを確認する習慣をつけ、必要に応じてBOM付きUTF-8への変換やPower Queryでの取り込みを試してみてください。
改行コードの違いによるトラブルにも注意しながら、エクセルでのCSVデータ処理をスムーズに進めていきましょう。