スプレッドシートのDATEVALUE関数の使い方|文字列→日付変換

スポンサーリンク

CSVをインポートしたら、日付のはずなのに並べ替えも日数計算もできない。セルを見ると左寄せになっていて、どうやら文字列として取り込まれたみたいだ。

こうなると一つずつ手入力で直すのは大変ですよね。数百行あるデータなら、なおさらです。

そんなときに使うのがDATEVALUE関数です。文字列として入っている日付を、計算に使えるシリアル値に一発変換してくれます。

この記事では、DATEVALUE関数の基本から、CSVデータの一括変換、DATE関数やVALUE関数との使い分けまで解説します。

DATEVALUE関数とは?文字列の日付をシリアル値に変換する関数

DATEVALUE関数(読み方: デイトバリュー関数)は、文字列形式の日付をシリアル値に変換する関数です。

名前は英語の「date(日付)」+「value(値)」がそのまま関数名になっています。

Googleスプレッドシートでは、日付を内部的に「シリアル値」という数値で管理しています。1899年12月30日を起点にした通し番号で、たとえば「2026/1/1」はシリアル値で「46023」です。

セルに「2026/3/15」と入力すると、通常はスプレッドシートが自動でシリアル値として認識してくれます。ところがCSVインポートや&での文字列結合で「見た目は日付だけど中身は文字列」という状態になることがあります。

DATEVALUE関数は、こうした文字列の日付をシリアル値に変換してくれます。変換すれば、日付の計算や並べ替えができるようになりますよ。

NOTE

文字列かどうかを見分けるコツは、セルの配置です。数値や日付は右寄せ、文字列は左寄せで表示されます。左寄せになっていたら文字列の可能性が高いです。

DATEVALUE関数の基本的な使い方

構文と引数

=DATEVALUE(日付文字列)

引数はひとつだけです。日付を表す文字列をカッコの中に入れます。

引数必須/任意説明
日付文字列必須日付を表す文字列、またはセル参照

NOTE

時刻を含む文字列(”2026/3/15 10:00″など)を渡した場合、時刻部分は無視されます。日付部分のシリアル値だけが返ります。

使用例:文字列の日付をシリアル値に変換する

もっともシンプルな使い方です。ダブルクォーテーションで囲んだ日付文字列を指定します。

=DATEVALUE("2026/3/15")

結果は「46097」(シリアル値)です。セルの表示形式が「標準」のままだと数字で表示されます。「表示形式」メニューから「日付」を選べば、「2026/3/15」として表示されますよ。

セル参照でも使えます。A2に文字列「2026/3/15」が入っているとします。

=DATEVALUE(A2)

結果は同じく「46097」です。

さまざまな日付形式に対応しています。

=DATEVALUE("2026/3/15")      → 46097
=DATEVALUE("2026-3-15")      → 46097
=DATEVALUE("2026年3月15日")   → 46097
=DATEVALUE("March 15, 2026") → 46097

スラッシュ区切り・ハイフン区切り・日本語表記・英語表記、いずれもスプレッドシートが日付として認識できれば変換できます。

CSVインポートで文字列になった日付を一括変換する

DATEVALUE関数がもっとも活躍するのは、CSVインポートの場面です。

CSVデータの文字列日付を変換する

他のシステムから出力したCSVをスプレッドシートにインポートすると、日付列が文字列として取り込まれることがよくあります。

A列に文字列の日付が並んでいるとします。B2に次の数式を入れましょう。

=DATEVALUE(A2)

この数式をB列にコピーすれば一括変換できます。変換後のB列をコピーして「値のみ貼り付け」すれば、数式を消してシリアル値だけ残せます。

あとはセルの表示形式を「日付」に変更すれば完了です。

TIP

大量のデータを変換するときは、B列に数式を入れてからB列全体をコピーし、A列に「値のみ貼り付け」すると元のデータを直接置き換えられます。補助列が不要になってすっきりしますよ。

&で結合した日付文字列をシリアル値に変換する

セルの値を&で結合すると、結果は文字列になります。日付として使いたい場合はDATEVALUE関数で変換しましょう。

A1に「2026」、B1に「3」、C1に「15」が入っているとします。

=DATEVALUE(A1&"/"&B1&"/"&C1)

結果は「46097」(2026/3/15のシリアル値)です。

ただしこのケースでは、DATE関数=DATE(A1,B1,C1)と書くほうがシンプルです。DATEVALUE関数は「すでに日付形式の文字列が存在する」場面で使うのがベストです。

文字列の日付同士で日数差を計算する

文字列のままでは引き算ができません。DATEVALUE関数で変換すれば日数差を計算できます。

A1に「2026/3/1」(文字列)、B1に「2026/4/1」(文字列)が入っているとします。

=DATEVALUE(B1)-DATEVALUE(A1)

結果は「31」(日数差)です。期日管理や経過日数の計算で、元データが文字列のときに使えるパターンです。

DATEVALUE関数のよくあるエラーと対処法

DATEVALUE関数で発生するエラーは、ほとんどが引数の文字列に関する問題です。

症状原因対処法
#VALUE!エラー認識できない日付形式“2026/3/15″のように認識できる形式に修正する
#VALUE!エラー空のセルを参照している=IF(A1="","",DATEVALUE(A1)) で空セルチェック
#VALUE!エラー余分なスペースが混入=DATEVALUE(TRIM(A1)) でスペースを除去
5桁の数字が表示される表示形式が「標準」のまま表示形式を「日付」に変更する(正常動作)

認識できない日付形式のとき

「15/03/2026」のように日/月/年の順番で入力されていると、スプレッドシートのロケール設定によっては正しく認識されないことがあります。

SUBSTITUTE関数で区切り文字を置き換えるか、文字列操作で年/月/日の順に並べ替えてからDATEVALUE関数に渡しましょう。

見えないスペースや制御文字があるとき

見た目は正しい日付なのにエラーが出るときは、スペースや制御文字が混入している可能性があります。

TRIM関数CLEAN関数で前処理してから変換しましょう。

=DATEVALUE(TRIM(CLEAN(A1)))

TRIM関数は余分なスペースを除去し、CLEAN関数は印刷できない制御文字を除去します。

IFERRORで安全に変換する

変換できない文字列が混在しているときは、IFERRORで囲むとエラーを回避できます。

=IFERROR(DATEVALUE(A1), "")

エラーのときは空白を返します。大量データを一括変換するときに便利です。

DATE関数・VALUE関数・TEXT関数との使い分け

文字列と日付を変換する関数はいくつかあります。目的に応じて使い分けましょう。

関数目的使い方の例
DATEVALUE文字列の日付をシリアル値に変換=DATEVALUE("2026/3/15") → 46097
VALUE関数文字列を数値に変換(日付・時刻・数値すべて対応)=VALUE("2026/3/15") → 46097
TEXT関数シリアル値を指定書式の文字列に変換=TEXT(46097,"YYYY/MM/DD") → “2026/03/15”
DATE関数年・月・日の数値から日付を作成=DATE(2026,3,15) → 2026/3/15

DATEVALUEとVALUEの違い

VALUE関数は日付文字列にも使えるため、多くの場面でDATEVALUE関数と同じ結果になります。

=DATEVALUE("2026/3/15")  → 46097
=VALUE("2026/3/15")      → 46097

結果は同じです。ではどう使い分ければいいのでしょうか。

DATEVALUE関数は「日付文字列専用」です。数式を見た人に「この列は日付データを扱っている」という意図が伝わります。確実に日付とわかっている列にはDATEVALUE関数がおすすめです。

一方、VALUE関数は数値も日付も時刻もまとめて変換できます。「何の文字列が入っているかわからない」ときや、数値と日付が混在している列にはVALUE関数が向いています。

もうひとつの違いは、時刻を含む文字列の扱いです。

=DATEVALUE("2026/3/15 10:30")  → 46097(日付部分のみ)
=VALUE("2026/3/15 10:30")      → 46097.4375(日付+時刻)

DATEVALUE関数は時刻部分を無視して日付のシリアル値だけを返します。VALUE関数は時刻も含めた値を返します。日付だけが必要なときはDATEVALUE関数のほうが安全です。

DATEVALUEとDATE関数の違い

どちらも日付のシリアル値を返しますが、入力が異なります。

  • DATEVALUE関数: 文字列の日付を受け取る(例: =DATEVALUE("2026/3/15")
  • DATE関数: 年・月・日の数値を受け取る(例: =DATE(2026,3,15)

年・月・日がバラバラのセルに入っているならDATE関数を使いましょう。「2026/3/15」のような日付形式の文字列がすでにあるならDATEVALUE関数が適しています。

DATEVALUEとTEXT関数は逆の操作

TEXT関数はシリアル値を文字列に変換する関数です。DATEVALUE関数はその逆で、文字列をシリアル値に戻します。

=TEXT(46097, "YYYY/MM/DD")   → "2026/03/15"(文字列)
=DATEVALUE("2026/03/15")     → 46097(シリアル値に戻る)

TEXT関数で書式を整えた結果をさらに計算に使いたくなったら、DATEVALUE関数で戻せることを覚えておくと便利です。

まとめ

DATEVALUE関数は、文字列形式の日付をシリアル値に変換する関数です。

ポイントを整理します。

  • 構文は =DATEVALUE(日付文字列) の1引数だけ
  • CSVインポートで日付が文字列になったときの定番の解決策
  • スラッシュ区切り・ハイフン区切り・日本語表記など幅広い形式に対応
  • 時刻を含む文字列は日付部分のみ変換(時刻は無視される)
  • VALUE関数との違いは「日付専用」であること。意図が明確になる
  • 年・月・日がバラバラならDATE関数、文字列がすでにあるならDATEVALUE関数
  • TEXT関数はDATEVALUE関数の逆操作
  • エラーが出たらTRIM・CLEAN関数で前処理、IFERRORで安全に変換

まずは =DATEVALUE(A2) でCSVデータの文字列日付を変換するところから試してみてください。

関連記事

タイトルとURLをコピーしました