仕事などで CSV ファイルを取り扱うことがあると思いますが、Excelで開くと0が消えてしまったり、文字化けしてしまったり・・・などと、うまく行かない経験をした方も多いと思います。
今回の記事では、CSVファイルをExcelで適切に取り扱う方法について紹介したいと思います。
そもそもCSVファイルとは何か?
そもそも、CSVファイルとは何でしょうか。

エクセルといっしょですよね?色とか罫線とかはないけど。

ぶっぶー。はずれで~す。
ファイルのアイコンとかも違うじゃん(笑)
Excel用のファイル形式だと思っている人を見かけますが、Excelファイルではありません。多くの場合、Excelファイルとそっくりのアイコンになっていて、ダブルクリックするとExcelが開くので、こういった勘違いがうまれています。

CSVとは、Comma Separated Valueのことで、その名の通りカンマで区切られた値のデータのことです。
実際のデータはこんな感じです。確かにカンマで区切られていることがわかります。(ファイルを右クリック → プログラムから開く → メモ帳 で開けます)

カンマで区切っただけのとてもシンプルな形式なので、汎用性が高く、ほとんどどんなシステムでも取り扱いが可能です。そのため、異なるシステム間でのデータのやりとり等に使われてたりします。

いやいや、僕がCSVファイル開いたらこんな見た目じゃないし。
多くのパソコンの場合、CSVファイルをダブルクリックするとExcelで開くように標準設定されています (関連付けと言います) 。そのため、CSVファイルの中身と言ったら、以下の画像のようなイメージの人が多いのです。

これは、ExcelがCSVファイルを読み込んで、表形式に整えて表示してくれているだけなのです。

私たちが知らないうちに、Excelが気を利かせてくれてたってことね。あれ・・・何か違和感があるような・・・?
そういうことです。でも、Excelの(余計な)気遣いのせいで、問題が起きるケースが結構あるのです・・・
ExcelでCSVを開くと発生する問題
先述のように、Excelは、CSVファイルを見やすく表形式で表示してくれるので非常に便利なのですが、問題が起きるケースがあります。代表的な例を紹介します。
0落ち問題(0が無くなってしまう)
かなりよく見かける問題ですが、ExcelでCSVファイルを開くと、0(ゼロ)が無くなってしまうことがあるのです。

この例だと、顧客番号をExcelが「数値」だと判断して、頭の0を消してしまいました。また、生年月日を「日付」だと判断して、月の “01” を “1” に、日の “05” を “5” にしてしまいました。

他の部署からもらったデータ、ゼロが無くなってたのはこういうことか・・・
予想外の型変換問題
0落ち問題ほどは見かけませんが、想定外の型変換が行われてしまうことがあります。

きっと、これ以外にも色々なケースがあると思われます。
(参考)文字化け問題
これは、「Excelのいらぬ気遣い」とはちょっと毛色が違いますが、文字化けしてしまうケースもあります。

文字コードについては解説が難しいので省略しますが、この世の中にそこそこ存在している「UTF-8(BOM無)」の形式のCSVファイルを開くと文字化けします。
CSVファイルを正しく読み込む方法
さて、CSVファイルを単純にExcelで開くと、問題が起きる場合があることがわかりましたでしょうか。
ここからはその対策、つまり、CSVファイルを正しく読み込む方法をいくつか解説します。
Excelの「テキストまたはCSVから」機能で読み込む
まずは、Excelの機能(Power Query)を使用する方法です。(なお、この手順はOffice 365の現時点での最新バージョン(Excelバージョン1902) のものとなります。別のバージョンのExcelをご利用の場合は手順が異なる場合があります。)


この後の手順は、取り込むCSVファイルの1行目が、項目名になっているか、データになっているかで若干異なります。
1行目がデータから始まるCSVファイルの場合(簡単)
1行目が項目名ではなく、データから始まるCSVファイルの場合は、簡単手順で取り込みが可能です。


1行目が項目名になっているCSVファイルの場合
1行目が項目名になっている場合は、もうひと手間かかります。と言っても、難しくはありません。




<注意>「取り込んだ」というより「リンクした」と考える
この手順でCSVを取り込んだ場合、データの本体はあくまでも「.csv」のファイルとなります。Excelファイルは、「.csv」のファイルを表示しているに過ぎません。
今回の例でいえば、「顧客情報.csv」のデータを修正して、取り込み先のExcelファイルのデータを「更新」すると、csvの変更内容がExcelに反映されるので注意してください。

取り込み元のCSVファイルとの連動を解除するには、クエリの削除を行います。

Excelアドインの「Excel CSV I/O」を利用する
「あるSEのつぶやき・改」というブログを運営されている fnya さんが作成された、Excel CSV I/O というアドインが大変便利です。
上記のリンクにインストールの方法が記載されています。
下記の作業を忘れるとエラーになるのでご注意ください。
ファイルを解凍して作成される「ExcelCsvIO.xlam」のファイルのプロパティからブロックを解除します
早速、実際にCSVを取り込んでみます。



CSV I/O はインストール作業が必要なものの、非常に簡単にCSVの取り込みができます。更に、CSVファイルを書き出すことも可能なのでおすすめです。
(番外編)そもそもExcelを使わない方法1(Cassava Editor)
今回の記事は、ExcelでCSVファイルを扱う前提で執筆していますが、そもそもExcelを使わないという発想もありだと思います。
私のおすすめは あすかぜさん という方が作成された、Cassava Editorというフリーソフトです。

ダウンロードして「Cassava.exe」を実行するだけという手軽さもGOODです。

Excelほどの機能はありませんが、CSVをパパっと確認したり、修正したりする用途であれば十分です。
(番外編)そもそもExcelを使わない方法2(サクラエディタ)

サクラエディタはかなり人気がありますので、利用している方も多いのではないでしょうか。
CSVの扱いについては、Excelのような操作感で編集をすることはできませんが、CSVの中身を確認したり、少量の修正をする程度であれば便利な方法がありますので紹介します。
まず、設定メニューのタイプ別設定一覧を開きます。

追加を押すと、新たな設定(下図だと設定17)が追加されるので、設定変更を押します。

下図を参考に設定してください。
なお、ファイル拡張子欄にcsvと入力した場合、今後サクラエディタでcsvファイルを開くと、自動的に設定が適用されるようになります。
(ファイル拡張子欄を空白にした場合は、csvファイルを開いてから、タイプ別設定一覧で今回作った設定をダブルクリックすると、設定が適用されます)

まとめ + 補足(この記事の例と別バージョンのExcelの場合)
いかがでしたか。CSVの取り扱いについて、参考になれば幸いです。
補足ですが、この記事で解説したExcelと違うバージョンを使っている方は、データの取り込み時に全く違う画面が出てくると思います。その場合におすすめの記事を紹介させていただきます。
また、私と同じ環境でも、別バージョンの機能が利用できるようです。こちらもおすすめ記事を紹介しておきます。
コメント