Excelで日付同士を引き算して「日数」を求めようとしたときに、
「エラーが出る」「思ったような結果にならない」などのトラブルに遭遇したことはありませんか?
✔ #VALUE!
エラーになってしまう
✔ 数式は合っているのに結果が空白または0になる
✔ 日付を引いたはずなのに「シリアル値」や「意味不明な値」が表示される
この記事では、Excelで日付の引き算がうまくいかない時の原因と解決方法を、実例つきでわかりやすく解説します。
目次
日付の引き算は「=終了日 - 開始日」
Excelでは、日付は内部的に「シリアル値(連番)」として扱われているため、
2つの日付をそのまま引き算すれば「日数差」が出るのが基本です。
A列(開始日) | B列(終了日) | C列(日数) |
---|---|---|
2025/03/01 | 2025/03/10 | =B2 - A2 → 9 |
❗ よくある原因と対処法
原因①:日付の形式が「文字列」になっている
🔍 症状:
#VALUE!
エラーが出る計算結果が空白になる
✅ 対処法:
セルを右クリック →「セルの書式設定」→「日付」に変更
もしくは
DATEVALUE
関数を使って変換
原因②:セルが空白 or 不正な入力(例:全角スペース)
🔍 症状:
エラーは出ないが計算結果が「0」や「空白」になる
✅ 対処法:
セルが正しく入力されているか確認
必要なら
IF
関数やIFERROR
で補う
原因③:関数の構文ミス(DATEDIFの場合)
🔍 症状:
#NUM!
エラーになる関数が正しく計算されない
✅ 対処法:
DATEDIF関数は「開始日 < 終了日」でないとエラーになります
正しい構文に修正しましょう
原因④:結果のセルが「日付表示形式」になっている
🔍 症状:
結果が「1900/01/09」など、変な日付に見える
✅ 対処法:
結果セルを右クリック →「セルの書式設定」→「標準」または「数値」に変更
✅ シリアル値を「日付」として表示してしまっている状態です。
✅よく使う日付差の計算パターン
計算内容 | 数式例 | 備考 |
---|---|---|
日数をそのまま求める | =B2 - A2 | 単純な日付の差 |
日数差(関数で正確に) | =DATEDIF(A2, B2, "D") | DATEDIF 関数を使う |
年数差(満年齢) | =DATEDIF(A2, B2, "Y") | 誕生日などの年齢計算に便利 |
月数差 | =DATEDIF(A2, B2, "M") | 契約月数など |
🛠 トラブル解決のチェックリスト
チェック項目 | 確認ポイント |
---|---|
日付が正しく入力されているか | 2025/3/1 など正しい形式か? |
書式が「日付」になっているか | 「文字列」だと計算できません |
結果セルの表示形式が正しいか | 計算結果が「標準」や「数値」になっているか? |
開始日と終了日の順序が正しいか | 終了日が前だとマイナスやエラーになる |
✅ まとめ:日付の引き算トラブルと解決法
トラブル内容 | 原因 | 解決方法 |
---|---|---|
#VALUE! エラー | 日付が文字列 or 空白 | 日付形式に変換・DATEVALUEを使う |
#NUM! エラー | DATEDIFで日付の順序が逆 | 日付の順を見直す |
結果が日付になる | 書式が「日付」になっている | 書式を「標準」や「数値」に変更 |
結果が0または空白 | セルに無効な値・空白がある | IFやISNUMBERでエラーチェック |
🎯 活用シーン
作業日数の自動計算
契約日と更新日の差
申請から承認までの経過日数
日付ベースの進捗・納期管理