「CSVを取り込んだら日付が文字列になっていて、並べ替えも計算もできない…」そんな経験はありませんか。見た目は日付なのにExcelが日付として認識してくれないと、集計や期日管理でつまずきますよね。
そんなときに使うのがDATEVALUE関数です。この記事では基本の書き方から、CSVデータの一括変換や和暦文字列の対処法まで、実務パターンをまとめて紹介します。
この記事は次のような人におすすめ
– CSVや他システムからの取り込みで日付が文字列になってしまった
– 文字列の日付を計算や並べ替えに使えるようにしたい
– DATEVALUE関数とVALUE関数の違いを整理したい
DATEVALUE関数とは?
DATEVALUE関数(読み方: デイトバリュー)は、文字列形式の日付をシリアル値に変換する関数です。英語の「date(日付)」+「value(値)」がそのまま関数名になっています。
Excelでは日付を内部的に「シリアル値」という数値で管理しています。1900年1月1日を「1」として、1日ごとに1ずつ増える仕組みです。たとえば2025年4月1日のシリアル値は「45748」です。
セルに 2025/4/1 と入力すると、通常はExcelが自動的にシリアル値として認識してくれます。ところがCSVインポートや&での文字列結合などで「見た目は日付だけど中身は文字列」という状態になることがあります。
DATEVALUE関数は、こうした文字列をシリアル値に変換してくれます。日付として計算や並べ替えに使えるようになりますよ。
文字列かどうかを見分けるコツ
セルの値が文字列になっていると、セルの左上に小さな緑の三角形(エラーインジケーター)が表示されることがあります。また、セルを選択して数式バーを見たとき、左寄せで表示されていれば文字列の可能性が高いです。
DATEVALUE関数の書き方(構文と引数)
基本構文
=DATEVALUE(日付文字列)
引数は1つだけで、必須です。
引数の説明
| 引数 | 必須/省略可 | 内容 |
|---|---|---|
| 日付文字列 | 必須 | 日付を表す文字列を指定する。”2025/4/1″ や “2025年4月1日” のようにExcelが日付として認識できる形式が必要 |
note
時刻を含む文字列(”2025/4/1 10:00″など)を渡した場合、時刻部分は無視されます。時刻も含めて変換したいときは、VALUE関数を使ってください。
DATEVALUE関数の基本的な使い方
文字列を直接指定して変換する
もっともシンプルな使い方です。ダブルクォーテーションで囲んだ日付文字列を指定します。
=DATEVALUE("2025/4/1")
結果: 45748(シリアル値)
セルの表示形式が「標準」のままだと数値のまま表示されます。日付として見たい場合は、表示形式を「日付」に変更してください。
セル参照で変換する
A1に文字列 2025/4/1 が入っている場合、次のように書きます。
=DATEVALUE(A1)
結果: 45748(シリアル値)
CSVインポートで日付列が文字列になったとき、この形で隣の列に変換式を入れてオートフィルするのが定番のパターンです。
さまざまな日付形式に対応する
DATEVALUE関数はExcelが日付として認識できる形式であれば変換できます。
=DATEVALUE("2025/4/1") → 45748
=DATEVALUE("2025-4-1") → 45748
=DATEVALUE("2025年4月1日") → 45748
=DATEVALUE("April 1, 2025") → 45748
=DATEVALUE("1-Apr-2025") → 45748
スラッシュ区切り・ハイフン区切り・日本語表記・英語表記など、幅広い形式に対応しています。
DATEVALUE関数の実務活用パターン
CSVインポートで文字列になった日付を一括変換する
他のシステムから出力したCSVファイルをExcelで開くと、日付列が文字列として取り込まれることがよくあります。
A列に文字列の日付が入っているとします。B列に変換式を入れましょう。
=DATEVALUE(A2)
この式をB列にオートフィルすれば、一括変換できます。変換後のB列をコピーして「値のみ貼り付け」すれば、元のA列を置き換えることもできますよ。
tip
変換後にB列を「値のみ貼り付け」でA列に上書きすれば、補助列を残さずにすみます。貼り付けた後はA列の表示形式を「日付」に変更するのを忘れずに。
&で結合した日付文字列をシリアル値に戻す
セルの値を&で結合すると、結果は文字列になります。日付として使いたい場合はDATEVALUE関数で変換しましょう。
A1に「2025」、B1に「4」、C1に「1」が入っているとします。
=DATEVALUE(A1&"/"&B1&"/"&C1)
結果: 45748(2025/4/1のシリアル値)
ただしこのケースでは、DATE関数で =DATE(A1,B1,C1) と書くほうがシンプルです。DATEVALUEは「すでに日付形式の文字列が存在する」場面で使うのがベストです。
文字列の日付同士で日数差を計算する
文字列のままでは引き算ができませんが、DATEVALUEで変換すれば計算できます。
A1に 2025/3/1(文字列)、B1に 2025/4/1(文字列)が入っているとします。
=DATEVALUE(B1)-DATEVALUE(A1)
結果: 31(日数差)
期日管理や経過日数の計算で、元データが文字列のときに使えるパターンです。
和暦の文字列を変換する
「令和7年4月1日」のような和暦文字列は、Excelの設定によってはDATEVALUEで直接変換できない場合があります。その場合はSUBSTITUTE関数で西暦に置き換えてから変換します。
=DATEVALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"年","/"),"月","/"),"日",""))
A1が「2025年4月1日」なら「2025/4/1」に変換されてから、シリアル値になります。「令和」「平成」などの元号が含まれる場合は、元号を西暦年に置き換える追加処理が必要です。
TEXT関数で作った文字列を元に戻す
TEXT関数はシリアル値を文字列に変換する関数で、DATEVALUE関数とは逆の操作になります。
=TEXT(A1, "yyyy/mm/dd") → "2025/04/01"(文字列)
=DATEVALUE("2025/04/01") → 45748(シリアル値)
TEXT関数で書式を整えた結果をさらに計算に使いたくなったら、DATEVALUEで戻せることを覚えておくと便利です。
よくあるエラーと対処法
DATEVALUE関数で発生するエラーは、ほとんどが引数の文字列に関する問題です。
| 症状 | 原因 | 対処法 |
|---|---|---|
| #VALUE! エラーが出る | 引数がExcelが認識できない日付形式 | “2025/4/1” のようにExcelが解釈できる形式に修正する |
| #VALUE! エラーが出る | 引数が空のセルを参照している | IF関数で空セルチェックを入れる: =IF(A1="","",DATEVALUE(A1)) |
| #VALUE! エラーが出る | セル内に余分なスペースがある | TRIM関数でスペースを除去: =DATEVALUE(TRIM(A1)) |
| 5桁の数字が表示される | セルの表示形式が「標準」のまま | セルの表示形式を「日付」に変更する(DATEVALUE関数の正常な動作。シリアル値が返っている) |
| すでに日付のセルに使って同じ値が返る | 参照先がすでにシリアル値(文字列ではない) | DATEVALUE関数は不要。そのセルはすでに日付として認識されている |
note
DATEVALUE関数は「文字列を日付に変換する」関数です。すでにExcelが日付として認識しているセルに対して使う必要はありません。「文字列かどうか分からない」ときは、TYPE関数で確認できます。
=TYPE(A1)が「2」なら文字列です。
似た関数との違い・使い分け
文字列と日付を変換する関数はいくつかあります。目的に応じて使い分けましょう。
| 関数 | 目的 | 使い方の例 |
|---|---|---|
| DATEVALUE | 文字列の日付をシリアル値に変換する | =DATEVALUE("2025/4/1") → 45748 |
| VALUE関数 | 文字列を数値に変換する(日付・時刻・数値すべて対応) | =VALUE("2025/4/1") → 45748 |
| TEXT関数 | シリアル値を指定した書式の文字列に変換する | =TEXT(45748,"yyyy/mm/dd") → “2025/04/01” |
| DATE関数 | 年・月・日の数値から日付を作成する | =DATE(2025,4,1) → 2025/4/1 |
| TIMEVALUE関数 | 文字列の時刻をシリアル値に変換する | =TIMEVALUE("10:30") → 0.4375 |
使い分けのポイント
- 「文字列の日付を日付に変換したい」→ DATEVALUE関数
- 「文字列の数値・日付・時刻を数値に変換したい」→ VALUE関数(より汎用的)
- 「日付を好きな書式の文字列にしたい」→ TEXT関数(DATEVALUEの逆操作)
- 「年・月・日を個別に指定して日付を作りたい」→ DATE関数
- 「文字列の時刻を時刻に変換したい」→ TIMEVALUE関数
DATEVALUEとVALUEの違い
VALUE関数は日付文字列にも使えるため、多くの場面でDATEVALUE関数と同じ結果になります。ただしDATEVALUE関数は「日付文字列専用」なので、数式の意図が読み手に伝わりやすいのがメリットです。また、時刻を含む文字列ではVALUE関数は時刻部分もシリアル値に含めますが、DATEVALUEは日付部分のみを返します。
まとめ
DATEVALUE関数は、文字列形式の日付をシリアル値に変換する関数です。
- 構文:
=DATEVALUE(日付文字列)— 引数は1つだけ - 戻り値: 日付のシリアル値(表示形式を「日付」にすれば日付として見える)
- 主な用途: CSVインポートで文字列になった日付の変換、&結合した日付文字列の変換、文字列の日付同士の日数計算
- エラー対処: #VALUE! が出たら日付形式・空セル・余分なスペースを確認
- 関連関数: VALUE関数(汎用変換)、TEXT関数(逆操作)、DATE関数(年月日から作成)
CSVデータの取り込みや他システムとの連携では、日付が文字列になるトラブルはよくあります。DATEVALUEを知っておけばサッと対処できるので、覚えておいて損はないですよ。
