【Excel】米国表記の日付が入ったCSVファイルが正しく読めないTech TIPS

海外の統計情報などのCSVファイルをExcelで読み込むと日付が正しく認識されないことがある。これは、Excelが自動的に日付を日本国内の表記に合わせてしまうためだ。このような場合の解決方法を紹介しよう。

» 2020年06月29日 05時00分 公開
[塩田紳二]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Tech TIPS」のインデックス

連載目次

対象:Office 2013/2016/2019/365


日付の表記は国によって違うからトラブルの元 日付の表記は国によって違うからトラブルの元
米国式の「月、日、年」の順になっている日付データを含むCSVを直接読み込んでしまうと日本式に「年、月、日」に解釈されてしまう。

 「Microsoft Excel(エクセル)」で、海外の統計情報などのCSVファイルを読み込んだ際に日付データの読み込みに失敗した経験はないだろうか。米国式の「月、日、年」などの順で記述された日付データを、日本語版Excelで読み込むと、日本国内で多く使われる「年、月、日」の順で日付を解釈しようとして失敗してしまうことがある。

 特に、西暦を省略して2桁表記(2012年1月3日を「1/3/12」といった具合に表記)とすると、年を判断する手掛かりがなくなるため、解釈の幅が広がり、米国式表記を日本式表記として解釈できるようになってしまう。しかし、日付によっては、途中から書式に合わなくなり、日付データにならない場合などがある。

 このような場合には、[テキストファイル]ウィザードやPower Queryの「データの変換」を使い、CSVファイルの読み込み時に日付データの形式を指定することで、セルに正しい日付データ(シリアル値)を書き込むことが可能になる。

 なお、タブ区切りのテキストファイルなども同じやり方で日付書式を指定できる。対象は、CSVだけでなく、テキストファイルや類似のファイル形式全般だ。ただし、表記が煩雑になるため、ここでは一括して「CSVファイル」として表記する。

[テキストファイル]ウィザードとは?

 [テキストファイル]ウィザードとは、「テキストファイル」をExcelで開いたときに自動的に起動される機能だ。これを使うと、読み込み時に日付テキストの書式指定(年、月、日の並び)をユーザーが指定できるようになる。

 Excelは、拡張子が「.csv」になっているCSVファイルには関連付けがなされており、エクスプローラーからCSVファイルをダブルクリックするなどしてExcelを起動させることができる。しかし、この方法でCSVファイルを開いてしまうと、日付データは、全て日本式の「年、月、日」で並んでいると解釈され、これに合わないパターンは日付として認識されない。

 [テキストファイル]ウィザードを起動して読み込むには、CSVファイルの拡張子を事前に「.txt」に変更後、起動したExcel側からファイルを開いて読み込みを行う。[ファイル]タブの[開く]−[参照]を使い、[ファイルを開く]ダイアログを表示させる。

ファイル名の拡張子を「.txt」にしてExcelで読み込む ファイル名の拡張子を「.txt」にしてExcelで読み込む
Excelを起動し、[ファイル]タブから[開く]−[参照]を選択して該当のテキストファイルを開く。CSVファイルの場合、事前にコピーするなどして拡張子を「.txt」にしたものを用意する。

 [ファイルを開く]ダイアログで目的のファイルがあるフォルダを開いたら、右下のドロップダウンリストから[テキストファイル]を選んで、対象のファイルを選択する。

 すると、[テキストファイル]ウィザードが起動する。このウィザードは3ページあり、最初のページでは、「データの形式」「読み込み開始行」「文字コード」などを指定する。CSVファイルなら「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」を選ぶ必要がある。もっとも、これがデフォルト設定なので、確認するだけでよい。CSVファイルでは先頭行に項目名などが入っていることがあり、その場合には「先頭行をデータの見出しとして使用する」のチェックを「オン」にする。

 [次へ]ボタンで2ページ目に移動したら「区切り文字」の「カンマ」の前にあるチェックを「オン」にする。CSVファイルなら「データのプレビュー」が項目の間に正しく線が引かれた状態になるはずである。

 さらに[次へ]ボタンで3ページ目に移動したら、「データのプレビュー」で、日付のある列を選択し、「列のデータ形式」で[日付]を選択、日時の並びを指定する。

 このドロップダウンリストでは、「年、月、日」が「Y、M、D」で表現されており、米国式の「月、日、年」ならば["MDY"]を選択する。この指定は列ごとに行う必要があり、複数の日付列があるなら、それぞれで指定する必要がある。最後に[完了]ボタンを押せば、日付を正しく解釈してCSVファイルが読み込まれるはずである。

[テキストファイル]ウィザードでCSVファイルを読み込む(1) [テキストファイル]ウィザードでCSVファイルを読み込む(1)
[テキストファイル]ウィザードの1ページ目では、ほとんど確認のみで、データの内容によって「先頭行を……」のチェックやファイル形式を指定する。
[テキストファイル]ウィザードでCSVファイルを読み込む(2) [テキストファイル]ウィザードでCSVファイルを読み込む(2)
2ページ目では「区切り文字」に「カンマ」を選択する。データのプレビューに区切り線が表示されるようになる。
[テキストファイル]ウィザードでCSVファイルを読み込む(3) [テキストファイル]ウィザードでCSVファイルを読み込む(3)
最後のページで、データのプレビュー欄で日付列を選択し、列のデータ形式で[日付]を選択して、該当の書式(米国式なら「MDY」)を選択する。すると、データのプレビューで日付列のヘッダ部分の表示が、選択した書式の略称に変わる。
[テキストファイル]ウィザードでCSVファイルを読み込む(4) [テキストファイル]ウィザードでCSVファイルを読み込む(4)
[テキストファイル]ウィザードを使うことで米国式日付の入ったCSVファイルを正しく読み込むことができる。

 このやり方は、日付の書式指定以外にも、文字コードの指定なども行うことが可能だ。CSVファイルをエクスプローラーから開いて、文字化けしているような場合には、この方法を試してみるとよい。むしろ、CSVファイルはエクスプローラーから直接開かず、Excel内から開いた方がトラブルは少ない。

Power Queryを使う場合

 CSVファイルを扱う方法として、Tech TIPS「【Excel】毎日集計のCSVファイルもクエリ機能で一発自動更新」でPower Queryを使う方法を紹介した。

 この方法でも、日本式以外の日付形式を読み込ませることは可能だ。ただし、前記記事で説明した手順でシートにCSVファイルを読み込む前に、日付書式を指定する作業が必要になる。

 同一ファイル名のCSVファイルを繰り返し読み込む必要があるなら、Power Queryを使う方が効率がよい。というのは、日付部分の書式の変換はPower Queryならば一回設定すれば、以後、読み込みのたびに変換を行ってくれるからだ。前述の[テキストファイル]ウィザードでは、CSVファイルを読み込むたびにウィザードを実行する必要がある。また、Power Queryなら、CSVファイルの拡張子を.txtに変更する必要もない。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。