ADVERTISEMENT

【Googleスプレッドシート】CSV読込時の日付フォーマット崩れ!書式の事前設定

【Googleスプレッドシート】CSV読込時の日付フォーマット崩れ!書式の事前設定
🛡️ 超解決

CSVファイルをGoogleスプレッドシートに読み込むと、日付の表示が崩れて困った経験はありませんか。たとえば「2024/01/01」と入力したつもりが「45292」という数値に変わったり、「01/01/2024」が別の形式で表示されたりします。これはCSVのテキストが自動的に日付として解釈される際に、スプレッドシートの設定と合わないために起こります。この記事では、CSV読込前にあらかじめ書式を設定しておく方法を解説します。事前に対策すれば、後から手直しする手間を大幅に減らせます。

【要点】CSV読込時の日付崩れを防ぐ3つの事前設定

  • 列の書式を「日付」に設定してからインポート: 読み込み先の列をあらかじめ「日付(日時)」に書式設定しておくことで、文字列が自動変換されるのを防ぎます。
  • 列の書式を「テキスト」に設定してからインポート: 日付として認識させたくない場合、列を「テキスト」に設定すると、元の文字列がそのまま残ります。
  • インポート時に「テキスト形式で読み込む」オプションを利用: Googleスプレッドシートのインポート機能で、列ごとに「テキスト」を指定すれば、変換を完全に回避できます。

ADVERTISEMENT

CSV読込で日付フォーマットが崩れる原因

CSVファイルは単なるテキストデータです。スプレッドシートはインポート時に、数字や日付らしき文字列を自動で解釈します。この自動解釈が原因で、日付が数値のシリアル値に変わったり、月日が逆転したりするのです。特に2024や2025のような4桁の年を含む日付は、スプレッドシートが内部的に1900年からの日数で管理するため、見た目が崩れます。また、システムのロケール設定(日本語なら年/月/日、英語なら月/日/年)が異なると、思わぬ変換が発生します。事前に書式を設定しておけば、この自動変換を制御できます。

事前書式設定で日付崩れを防ぐ手順

方法1:列全体の書式を「日付」にする

  1. 新しいスプレッドシートを開く
    Googleスプレッドシートを新規作成し、インポートしたいデータが入る範囲の列を選択します。たとえば日付がA列に入るなら、A列全体をクリックして選択してください。
  2. 書式メニューから「数字」→「日付」を選ぶ
    メニューバーの「表示形式」をクリックし、「数字」のサブメニューから「日付」または「日付(日時)」を選択します。これで列の表示形式が日付になります。
  3. CSVファイルをインポートする
    「ファイル」→「インポート」をクリックし、CSVファイルをアップロードします。インポート設定画面で「新しいシート」を選び、「インポート場所」は「現在のシート」のままでも構いません。インポート方式は「表としてインポート」を選びます。
  4. データが正しく表示されるか確認
    インポート後、日付列がシリアル値ではなく「2024/1/1」のような形式で表示されていれば成功です。もし崩れている場合は、その列の書式が「日付」になっているか再確認してください。

方法2:列全体の書式を「テキスト」にする

  1. インポート先の列を選択する
    方法1と同様に、日付が入る列をあらかじめ選択しておきます。
  2. 表示形式を「テキスト」に設定
    「表示形式」→「数字」→「テキスト」を選びます。これでその列は文字列として扱われるようになります。
  3. CSVをインポートする
    「ファイル」→「インポート」からCSVを読み込みます。インポート後、日付は「2024-01-01」のような元の文字列のまま表示されます。
  4. 必要に応じて日付関数で変換する
    後から日付として計算したい場合は、別の列で=DATEVALUE関数や=TEXT関数を使って変換できます。たとえば=TEXT(A2,”yyyy/mm/dd”)と入力すれば、文字列を日付形式に整形できます。

方法3:インポート時に「テキスト形式で読み込む」オプションを使う

  1. CSVファイルをインポートする
    「ファイル」→「インポート」を開き、対象のCSVファイルを選択します。
  2. インポート設定の「区切り文字」と「列の形式」を調整
    インポート画面で「区切り文字」は通常「カンマ」のままでも構いません。その下の「列の形式」で、日付が含まれる列をクリックして「テキスト」を選びます。列ごとに形式を指定できます。
  3. 「インポート」ボタンをクリック
    設定が終わったらインポートを実行します。指定した列はテキストとして読み込まれるため、日付の自動変換は発生しません。

よくある失敗例とその対処法

日付がシリアル値(45292など)で表示される

これは列の書式が「自動」または「数値」になっている場合に起こります。対処法は、その列を選択して「表示形式」→「数字」→「日付」に変更するだけです。インポート後にシリアル値が表示された場合でも、書式を変えれば正しい日付に戻ります。

日付が文字列のままで計算に使えない

事前に「テキスト」に設定した場合、日付は文字列として保持されます。計算に利用したいときは、=DATEVALUE関数を使ってシリアル値に変換します。たとえばセルA2に文字列「2024/01/01」がある場合、別のセルに=DATEVALUE(A2)と入力すれば日付として認識されます。その後表示形式を「日付」にすれば見た目も整います。

日付の月と日が逆転する(例:01/02/2024が1月2日になるべきが2月1日になる)

これはロケール設定が原因です。日本語環境では年/月/日が標準ですが、CSVが月/日/年で書かれていると逆転します。対処法は、インポート前にファイル全体の日付形式を確認し、必要なら事前にテキストエディタで修正するか、スプレッドシートの「ファイル」→「設定」でロケールを一時的に英語(米国)に変えてインポートする方法もあります。ただし、他のデータに影響が出る可能性があるため、列を「テキスト」としてインポートし、後から=DATE関数で組み立てる方が安全です。

ADVERTISEMENT

事前設定と事後修正の比較

方法 メリット デメリット
事前設定(列書式を日付に) インポート後の手間が最小限、シリアル値にならない ロケールの影響を受けることがある
事前設定(列書式をテキストに) 元の文字列が完全に保持される、ロケール影響なし 後で日付計算するには変換が必要
事後修正(書式を変える) 特別な準備が不要 シリアル値が表示されると混乱しやすい、データによっては修正が難しい

まとめ

CSVの日付崩れは、インポート前の列書式設定で確実に防げます。最も簡単な方法は、日付列を「日付」形式にしてから読み込むことです。もし元の文字列をそのまま残したい場合は「テキスト」形式を選び、後で=TEXT関数や=DATEVALUE関数を使って整形してください。これらの事前設定を習慣にすれば、インポート後の修正作業が減り、作業効率が向上します。ぜひ次のCSV読込時にお試しください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。