Excelの日付と時間は、あるとき急に言うことを聞かなくなります。
- 作業時間を合計したら、24時間を超えたところで 0:45 に戻ってしまった
- 退勤時刻から定時を引いたら、セルが ##### で埋まった
- 8時間働いた人の時給計算をしたら、給料が 400円 になった
別々のトラブルに見えますが、原因は全部同じです。
ヒントは、日付が入ったセルの表示形式を「標準」に変えると出てくる 46235 のような数字です。ここが分かると、上の3つが同じ話だったことが分かります。
この記事では、その正体から始めて、日付と時間でつまずくところを7つにまとめました。
- 日付と時間の正体を目で見る
- 数か月後の日付を出す(EDATE関数)
- 月末と月初を出す(EOMONTH関数)
- 勤続年数を出す(DATEDIF関数)
- 合計が24時間で0時に戻る(
[h]:mm) - 時給を掛けたら400円になる(×24)
- マイナスの時間が#####になる
全部覚える必要はありません。「これ、困ったやつだ」というものを1つ持ち帰っていただければ十分です。
1. 日付と時間の正体を目で見る
まず、日付の入ったセルを1つ選んで、表示形式を 「標準」 に変えてみてください。
ホームタブの「数値」グループにある表示形式の欄を、「標準」にするだけです。
すると、日付が消えて 46235 という数字になります。
壊れたわけでも、間違えたわけでもありません。これが日付の中身です。
Excelは、1900年1月1日を「1」として、1日進むごとに1ずつ増える数字で日付を管理しています。2026年8月1日は、1900年1月1日から数えて46,235日目。だから46235なんです。
この数字を シリアル値 と呼びます。
時刻は「小数」になっている
では、時刻の入ったセルを標準にするとどうなるか。
12:00 を標準にすると、0.5 になります。
1日を「1」としているので、12時はちょうど真ん中で0.5。同じように考えると、
| 時刻 | シリアル値 |
|---|---|
| 6:00 | 0.25 |
| 12:00 | 0.5 |
| 18:00 | 0.75 |
| 24:00 | 1 |
1日のうちのどこにいるかを、小数で表しているわけです。ここがこの記事でいちばん大事なところです。
日付と時刻が両方入っている場合
「2026/8/1 12:00」のように日付と時刻が両方入ったセルを標準にすると、46235.5 になります。さきほどの2つがくっついただけです。
切り離してみると、はっきりします。INT関数は小数を切り捨てて整数だけを取り出す関数です。
=INT(A2)
これで 46235(日付の部分)が出ます。残りは、元の数字から引けば出てきます。
=A2-INT(A2)
こちらは 0.5(時刻の部分)です。
整数の部分が日付、小数の部分が時刻。
Excelの日付と時間は、この1本の数直線の上に並んでいます。以降の6つは、すべてこの仕組みから説明がつきます。
補足: 1900年前後の日付を扱う場合だけ注意が必要です。Excelは互換性の都合で、実際には存在しない「1900年2月29日」をカレンダーに持っています。そのため1900年3月より前の日付は1日ずれます。普段の業務で1900年の日付を計算することはまずないので、こういうものだと思っておいて大丈夫です。
2. 数か月後の日付を出す(EDATE関数)
日付は「1日=1」で管理されているので、〇日後は足し算で出せます。
=A2+7
これで1週間後です。ここまでは問題ありません。
では、6か月後はどうでしょうか。「半年だから180日」と考えて足してみます。
=A2+180
1月31日に180を足すと、出てくるのは 7月30日。6か月後の7月31日には、1日足りません。
1か月は30日だったり31日だったり、2月は28日だったり29日だったりします。月をまたぐ計算は、足し算ではうまくいきません。
こういうときに使うのが EDATE関数 です。
=EDATE(A2, 6)
- 開始日 … 元になる日付
- 月 … 何か月ずらすか
これで、きちんと 7月31日 が出ます。
マイナスを入れれば過去にも遡れます。
=EDATE(A2, -2)
3月15日から2か月前で、1月15日です。
注意点が1つ。 EDATE関数の結果は、シリアル値のまま表示されることがあります。 46235のような数字が出てきたら、表示形式を「日付」に変えてください。壊れているわけではなく、1で見たとおり、それが日付の中身です。
3. 月末と月初を出す(EOMONTH関数)
「今月納品、翌月末払い」のような日付を計算するときの話です。
月末は31日の月もあれば30日の月もあり、2月は28日だったり29日だったり。手入力でやると、どこかで必ず間違えます。
月末を求めるのは EOMONTH関数 です。
=EOMONTH(A2, 1)
- 開始日 … 元になる日付
- 月 … 何か月ずらすか(EDATE関数と同じ考え方)
2つ目の引数で、どの月の月末かが決まります。
| 数値 | 出てくる日 |
|---|---|
| 0 | その月の月末 |
| 1 | 翌月の月末 |
| -1 | 先月の月末 |
7月のどこかの日付を基準にすれば、0で7月31日、1で8月31日、-1で6月30日です。これも結果がシリアル値で返ってくるので、表示形式を日付に直してください。
月初を出す関数は、存在しません
ここで意外に思われるところです。月初(その月の1日)を出す専用の関数は、Excelにありません。
ただ、EOMONTH関数で月末が出せるということは——先月末に1を足せば、その月の1日です。
=EOMONTH(A2, -1)+1
「1を足す」がそのまま「1日進める」になるのは、1で見たシリアル値の仕組みそのものです。
DATE関数を使う書き方もあります。
=DATE(YEAR(A2), MONTH(A2), 1)
「A2の年、A2の月、1日」という組み立てで、結果は同じです。ただし関数が3つ入れ子になるので、EOMONTHで先月末を出して1を足すほうが簡単です。
4. 勤続年数を出す(DATEDIF関数)
「この人は何年働いているか」を出したいとき。使うのは DATEDIF関数 です。
この関数、ちょっと特殊です。セルに =DATEDIF( と打ち始めても、関数の候補に出てきません。 途中まで打つと候補がずらっと出てくる、あの一覧に載っていないんです。
出てこないだけで、使えます。引数の案内も出ないので、自分で最後まで入力してください。
=DATEDIF(B2, TODAY(), "Y")
- 開始日 … 入社日
- 終了日 … 今日(TODAY関数)
- 単位 … 何で数えるか
最後の単位は、ダブルクォーテーションで囲んで指定します。
| 単位 | 出てくるもの |
|---|---|
| “Y” | 満年数(11年) |
| “M” | 通算の月数(138か月) |
| “D” | 通算の日数 |
| “YM” | 年数を数えた残りの月数(6か月) |
実務で使うのは「◯年◯か月」
「11年」だけでは足りず、「11年6か月」と出したいことのほうが多いはずです。その場合は “Y” と “YM” を文字列でつなぎます。
=DATEDIF(B2,TODAY(),"Y")&"年"&DATEDIF(B2,TODAY(),"YM")&"ヶ月"
& は文字をつなぐ記号です。「年数」+「年」+「残りの月数」+「ヶ月」を順につないでいます。
“MD”(残りの日数)もありますが、これは使わないでください。 条件によっておかしな値を返すことが知られていて、マイクロソフトのサポートページにも注意書きがあります。“Y” と “YM” の組み合わせが安全です。
5. 合計が24時間で0時に戻る([h]:mm)
ここからが本題です。おそらく、いちばん多いつまずきです。
作業時間を合計します。
=SUM(B2:B4)
8:30、9:00、7:15 の3つを足したので、24:45 になるはずです。ところが出てきたのは 0:45。
明らかに変ですよね。でも、計算は合っています。
合計セルの表示形式を「標準」に変えてみてください。
1.03125 と出ます。
1日を1として数えているので、24時間45分は「1日と45分」=1.03125。きちんと足し算はできているんです。
問題は表示のほうです。時刻の表示形式は「1日のうちの何時何分か」を表すものなので、整数の部分(=1日ぶん)が表示から消えて、残りの0.03125が0:45として出ているわけです。
角カッコで「繰り上げないで」と伝える
24時間を超えたまま表示するには、表示形式を変えます。
- 合計のセルを右クリック →「セルの書式設定」
- 「表示形式」タブ →「ユーザー定義」
- 種類の欄に
[h]:mmと入力
これで 24:45 と表示されます。
角カッコが「繰り上げないで」という合図です。これなら100時間でも200時間でも、そのまま表示できます。
一覧に [h]:mm が見当たらないときは、h:mm を選んでから h の部分だけを角カッコで囲んでください。
分で表示したいときは、mのほうを囲みます。
[m]:ss
これで「1485:00」のように、通算の分数で出ます。
6. 時給を掛けたら400円になる(×24)
これもよくある形です。8時間働いた人の給料を計算します。
=B2*E2
B2が労働時間の 8:00、E2が時給の 1200。出てきた答えは 400 です。
もうお分かりだと思いますが、8:00 を標準にすると 0.3333… です。8時間は1日の3分の1だからです。
つまりこの式は、8ではなく 0.3333に1200を掛けている。だから400円になります。
時刻を数値として計算したいときは、24を掛けて「日」から「時間」に戻します。
=B2*24*E2
これで 9,600円。正しい金額です。
分にしたいときは、さらに60を掛けます。
=B2*24*60
8:00なら480分です。
単位を揃えてから計算する——小学校の算数でやったことと同じです。Excelの時刻も、そこは変わりません。
ちなみに5の合計セル(1.03125)を数値として使いたいときも、同じく24を掛けます。
=SUM(B2:B4)*24で 24.75時間 になり、これに時給を掛ければ支給額が出ます。表示形式を[h]:mmにするのは「見せる」ため、×24は「計算に使う」ためです。
7. マイナスの時間が#####になる
退勤時刻が定時より早かった場合です。
=C2-B2
引き算の結果がマイナスになると、セルが ##### で埋まります。
「列の幅が足りないのかな」と思って広げたくなりますが、これは広げても直りません。
理由は1で見たとおりです。シリアル値は1900年1月1日から数えた日数なので、0より前の時刻というものが存在しない。マイナスの時刻を時計の形で表示する方法が、そもそもないんです。
対処は2つあります。
対処A:文字として表示する
マイナス記号を自分で付けて、文字列として見せる方法です。
="-"&TEXT(ABS(C2-B2),"h:mm")
- ABS関数 … マイナスの値をいったんプラスに直す
- TEXT関数 … その数値を「h:mm」の形の文字に変える
"-"&… 先頭にマイナス記号をくっつける
これで -0:30 と表示されます。ただしこれは文字なので、このセルをさらに合計することはできません。 見た目を整えるための方法です。
対処B:数値にしてしまう
計算を続けたい場合は、6と同じく24を掛けて数値に変えます。
=(C2-B2)*24
これなら -0.5 と表示され、マイナスのまま合計もできます。時間単位の数値になるので、そのまま時給を掛けることもできます。
過不足を集計したいならB、勤務表に見た目として出したいならA、という使い分けです。
なお、他のサイトでは「オプションで1904年から計算する設定に変える」という方法が紹介されていることがあります。たしかにマイナスの時刻は表示できるようになりますが、そのファイルに入っている既存の日付が全部4年ずれます。 すでにデータが入っているファイルでは勧めません。
おまけ:表示と中身は別物
最後にもう1つ、日付・時間と同じ理屈でつまずくところを。
CSVファイルからコピーしてきた数字と、自分で打ち込んだ数字。見た目はまったく同じでも、片方は数値、片方は文字列ということがあります。文字列になっていると、合計しても0のままです。
見分け方は簡単で、何も設定していないセルなら、数値は右に寄り、文字列は左に寄ります。
Excelは「数字は右、文字は左」と決めているからです。中央揃えや右揃えを設定してあると分からなくなるので、そのときは書式をいったん解除して確認してください。
文字列を数値に直すには、いくつか方法があります。
- 区切り位置 … データタブ →「区切り位置」→ そのまま「完了」を押すだけで数値に変わります(範囲が広いときはこれが速いです)
- VALUE関数 …
=VALUE(A2)で数値に変換します - 形式を選択して貼り付け … どこかのセルに1を入れてコピーし、直したい範囲に「形式を選択して貼り付け」→「乗算」
表示形式は化粧のようなものです。中身の数字は別にあります。
つまずきやすいところ
- EDATE・EOMONTHの結果が数字のまま出る … 壊れていません。表示形式を「日付」に変えてください
- DATEDIFが候補に出てこない … 出なくて正常です。最後まで自分で入力してください
[h]:mmを入れても24:45にならない … 角カッコが半角になっているか確認してください。全角の[]では効きません- 合計が0:45のまま … 表示形式を変えたのが別のセルかもしれません。合計セル自体を選び直してください
- 時給計算の×24を、時刻同士の引き算に掛け忘れる … 「時刻を数値として使うときは必ず×24」と覚えておくと、5・6・7が全部つながります
まとめ
- 日付と時間の正体はシリアル値。整数が日付、小数が時刻
- 月をまたぐ計算は EDATE関数。足し算では合わない
- 月末は EOMONTH関数。月初を出す関数は無いので 先月末+1
- 勤続年数は DATEDIF関数。候補に出ないが使える。単位は “Y”と”YM”
- 24時間で0時に戻るのは繰り上がったから。表示形式
[h]:mm - 時給計算が合わないのは単位が違うから。×24で日を時間に戻す
- マイナスの時間が##### になるのは、それが存在しないから
7つのうち5・6・7は、どれも「時刻を数値として扱う」話です。×24 という一手を覚えておくと、この3つは同じ方法で片付きます。
動画では、実際に画面を動かしながら同じ手順を解説しています。46235や1.03125が画面に出てくるところは、動いているものを見たほうが早いと思います。
▼動画で見る
【Excel】時間計算 24時間以上・引き算7選|0時に戻る理由、#####になる理由
https://youtu.be/sPcThB8-fiM
▼あわせて見たい(動画)
勤怠管理の時間計算がうまくいかないときの対処法
「自分の仕事のExcelでもできますか?」というご相談も受け付けています。
今の状況を聞かせていただければ、どこから始めると良いか一緒に整理していきます。


