Excelの日付計算は、「日数は引き算、月数と年数はDATEDIF、月末はEOMONTH、営業日はWORKDAYとNETWORKDAYS」と目的で関数を選ぶと迷いません。 日付の正体は連番の数値(シリアル値)なので、日数だけなら引き算で求められます。月や年、営業日のように暦のルールが関わるところで関数を使います。

この記事では、やりたいことから数式を引ける30行の早見表と、月末日・うるう年をまたぐ境界日での計算結果をまとめました。数式はそのままコピーして使えます。

確認環境:計算結果は LibreOffice Calc 24.2.7.2 のヘッドレス実行で求めた値です(確認日 2026-10-05)。関数の仕様と注意点は Microsoft サポートの各関数のページの記載にもとづいています。

この記事の結論

求めたいもの 使うもの 基本の数式
日数 引き算 =終了日-開始日
満年数・満月数(年齢、勤続年数) DATEDIF =DATEDIF(開始日,終了日,"Y")
Nか月後の同じ日 EDATE =EDATE(開始日,月数)
月末、月初、翌月○日 EOMONTH =EOMONTH(開始日,月数)
N営業日後の日付 WORKDAY =WORKDAY(開始日,日数,休日)
2つの日付の間の営業日数 NETWORKDAYS =NETWORKDAYS(開始日,終了日,休日)
土日以外が休みの営業日 WORKDAY.INTL/NETWORKDAYS.INTL =WORKDAY.INTL(開始日,日数,週末,休日)

Excel日付計算の数式早見表(30行)

次のセルに値が入っているものとして、数式と結果例を並べます。2026年10月5日は月曜日です。

セル 内容 値
A2 基準日 2026/10/05
B2 生年月日 1990/04/15
C2 入社日 2015/04/01
D2 期限 2026/12/25
H2:H7 休日リスト 2026/10/12、11/03、11/23、12/29、12/30、12/31
No. やりたいこと 数式 結果例
1 2つの日付の間の日数 =D2-A2 81
2 両端を含めた日数 =D2-A2+1 82
3 年末までの残り日数 =DATE(YEAR(A2),12,31)-A2 87
4 満年齢 =DATEDIF(B2,A2,"Y") 36
5 勤続年数(○年○か月) =DATEDIF(C2,A2,"Y")&"年"&DATEDIF(C2,A2,"YM")&"か月" 11年6か月
6 満月数 =DATEDIF(C2,A2,"M") 138
7 次の誕生日 =EDATE(B2,(DATEDIF(B2,A2,"Y")+1)*12) 2027/04/15
8 30日後 =A2+30 2026/11/04
9 1か月後の同じ日 =EDATE(A2,1) 2026/11/05
10 3か月前の同じ日 =EDATE(A2,-3) 2026/07/05
11 1年後の同じ日 =EDATE(A2,12) 2027/10/05
12 当月末 =EOMONTH(A2,0) 2026/10/31
13 翌月末 =EOMONTH(A2,1) 2026/11/30
14 前月末 =EOMONTH(A2,-1) 2026/09/30
15 当月1日 =EOMONTH(A2,-1)+1 2026/10/01
16 翌月1日 =EOMONTH(A2,0)+1 2026/11/01
17 翌月10日 =EOMONTH(A2,0)+10 2026/11/10
18 翌々月10日 =EOMONTH(A2,1)+10 2026/12/10
19 20日締めの翌月末 =EOMONTH(A2,IF(DAY(A2)<=20,1,2)) 2026/11/30
20 その月の日数 =DAY(EOMONTH(A2,0)) 31
21 5営業日後 =WORKDAY(A2,5,$H$2:$H$7) 2026/10/13
22 5営業日前 =WORKDAY(A2,-5,$H$2:$H$7) 2026/09/28
23 期限までの営業日数 =NETWORKDAYS(A2,D2,$H$2:$H$7) 57
24 当月の最終営業日 =WORKDAY(EOMONTH(A2,0)+1,-1,$H$2:$H$7) 2026/10/30
25 当月の最初の営業日 =WORKDAY(EOMONTH(A2,-1),1,$H$2:$H$7) 2026/10/01
26 日曜だけ休みで5営業日後 =WORKDAY.INTL(A2,5,11,$H$2:$H$7) 2026/10/10
27 水曜と日曜が休みの営業日数 =NETWORKDAYS.INTL(A2,D2,"0010001",$H$2:$H$7) 56
28 年度(4月始まり) =YEAR(EDATE(A2,-3)) 2026
29 四半期(4月始まり) =ROUNDUP(MONTH(EDATE(A2,-3))/3,0) 3
30 曜日 =TEXT(A2,"aaa") 月

結果が日付になる数式は、セルの表示形式を「日付」にすると表の形で表示されます。30行目の曜日は、Calcでは書式コードの先頭に日本語の指定を付けた =TEXT(A2,"[$-411]aaa") で「月」になることを確かめました。"aaaa" にすると「月曜日」です。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Excel日付計算の関数一覧|月末・営業日・年齢・期間の数式早見表」

表計算ソフトに貼れるタブ区切り版

A2・B2・C2・D2・H2:H7に上の値を入れたうえで、J1など表と重ならない位置に貼り付けてください。数式の列はそのまま計算されます。

やりたいこと  数式  結果例
2つの日付の間の日数  =D2-A2  81
両端を含めた日数    =D2-A2+1    82
年末までの残り日数   =DATE(YEAR(A2),12,31)-A2    87
満年齢 =DATEDIF(B2,A2,"Y") 36
勤続年数(○年○か月) =DATEDIF(C2,A2,"Y")&"年"&DATEDIF(C2,A2,"YM")&"か月"    11年6か月
満月数 =DATEDIF(C2,A2,"M") 138
次の誕生日   =EDATE(B2,(DATEDIF(B2,A2,"Y")+1)*12)    2027/04/15
30日後    =A2+30  2026/11/04
1か月後の同じ日    =EDATE(A2,1)    2026/11/05
3か月前の同じ日    =EDATE(A2,-3)   2026/07/05
1年後の同じ日 =EDATE(A2,12)   2027/10/05
当月末 =EOMONTH(A2,0)  2026/10/31
翌月末 =EOMONTH(A2,1)  2026/11/30
前月末 =EOMONTH(A2,-1) 2026/09/30
当月1日    =EOMONTH(A2,-1)+1   2026/10/01
翌月1日    =EOMONTH(A2,0)+1    2026/11/01
翌月10日   =EOMONTH(A2,0)+10   2026/11/10
翌々月10日  =EOMONTH(A2,1)+10   2026/12/10
20日締めの翌月末   =EOMONTH(A2,IF(DAY(A2)<=20,1,2))    2026/11/30
その月の日数  =DAY(EOMONTH(A2,0)) 31
5営業日後   =WORKDAY(A2,5,$H$2:$H$7)    2026/10/13
5営業日前   =WORKDAY(A2,-5,$H$2:$H$7)   2026/09/28
期限までの営業日数   =NETWORKDAYS(A2,D2,$H$2:$H$7)   57
当月の最終営業日    =WORKDAY(EOMONTH(A2,0)+1,-1,$H$2:$H$7)  2026/10/30
当月の最初の営業日   =WORKDAY(EOMONTH(A2,-1),1,$H$2:$H$7)    2026/10/01
日曜だけ休みで5営業日後    =WORKDAY.INTL(A2,5,11,$H$2:$H$7)    2026/10/10
水曜と日曜が休みの営業日数   =NETWORKDAYS.INTL(A2,D2,"0010001",$H$2:$H$7)    56
年度(4月始まり)   =YEAR(EDATE(A2,-3)) 2026
四半期(4月始まり)  =ROUNDUP(MONTH(EDATE(A2,-3))/3,0)   3
曜日  =TEXT(A2,"aaa") 月

似た関数の違いと選び方

比べる関数 違い 選び方
引き算 と DATEDIF の "D" どちらも日数。引き算は開始日が後でも負の数で返り、DATEDIFはエラーになる 日数は引き算で足りる
EDATE と EOMONTH EDATEは「同じ日」、EOMONTHは「月の末日」を返す 月末基準の日付はEOMONTH
WORKDAY と NETWORKDAYS WORKDAYは日付を返し、NETWORKDAYSは日数を返す 納期を出すならWORKDAY、日数を数えるならNETWORKDAYS
WORKDAY と WORKDAY.INTL INTLは休みの曜日を自由に指定できる 土日休みならWORKDAY、それ以外はINTL
条件 選ぶもの
「何日あるか」を知りたい 引き算
「満何年・満何か月か」を知りたい DATEDIF の "Y" "M" "YM"
開始日が月末で、毎月の月末を求めたい EOMONTH(EDATEを繰り返さない)
毎月15日のように、同じ日を求めたい EDATE
土日と祝日を除いて数えたい WORKDAY/NETWORKDAYS+休日リスト
定休日が水曜など土日以外 WORKDAY.INTL/NETWORKDAYS.INTL

日数を求める:引き算と日付の正体

Excelは日付を連番の数値として扱います。Microsoft サポートのページには、1900年1月1日がシリアル値1と書かれています。Calcで2026年10月5日を数値にすると46300でした。

=D2-A2                       → 81
=DAYS(D2,A2)                 → 81
=D2-A2+1                     → 82
=A2+30                       → 2026/11/04
=DATE(2024,3,1)-DATE(2024,2,28)   → 2(うるう年)
=DATE(2026,3,1)-DATE(2026,2,28)   → 1

引き算は「終了日−開始日」で、開始日そのものは数えません。開始日も1日目として数えるなら、+1 を足します。DAYS関数は引数の順番が「終了日, 開始日」です。

8桁の数字や文字列を日付に直すときは、年・月・日を切り出してDATE関数に渡します。F2に数値の20261005が入っている場合です。

=DATE(LEFT(F2,4),MID(F2,5,2),RIGHT(F2,2))   → 2026/10/05
=TEXT(F2,"0000-00-00")*1                    → 2026/10/05

DATE関数は、月や日がはみ出した値も暦に合わせて繰り上げ・繰り下げます。

=DATE(2026,13,1)             → 2027/01/01
=DATE(2026,3,0)              → 2026/02/28
=DATE(2026,1+1,31)           → 2026/03/03

3つ目は「1月31日の1か月後」を月に1を足して求めたつもりの式です。2月31日は無いので、3月3日まで繰り上がりました。月を足すときはDATEではなくEDATEを使う理由がここにあります。

月数・年数を求める:DATEDIF

=DATEDIF(開始日,終了日,単位) の単位は6種類です(Microsoft サポートの DATEDIF 関数のページ)。

単位 返すもの 2015/04/01 → 2026/10/05 の結果
"Y" 満年数 11
"M" 満月数 138
"D" 日数 引き算と同じ
"YM" 年を除いた月数 6
"MD" 月と年を除いた日数 4
"YD" 年を除いた日数 187

年齢と勤続年数

=DATEDIF(B2,A2,"Y")                                      → 36
=DATEDIF(C2,A2,"Y")&"年"&DATEDIF(C2,A2,"YM")&"か月"      → 11年6か月
=DATEDIF(DATE(2025,10,5),DATE(2026,10,5),"Y")            → 1
=DATEDIF(DATE(2025,10,6),DATE(2026,10,5),"Y")            → 0

DATEDIFは「満」で数えます。1年後の同じ日になって初めて1が返り、1日手前では0です。

2月29日生まれの年齢

開始日 終了日 "Y" の結果
2000/02/29 2026/02/28 25
2000/02/29 2026/03/01 26
2000/02/29 2028/02/29 28

うるう年でない年は、3月1日に年齢が1つ上がる計算になりました。2月28日の時点で上げたい規程の場合は、この境界を確かめてから式を決めます。

"MD" の注意点と代わりの数式

Microsoft サポートの DATEDIF 関数のページには、"MD" は既知の制限があるため使用をおすすめしない、結果が負の値・ゼロ・不正確な値になる場合がある、と書かれています。Calcでも月末をまたぐ日付で負の値を確認できました。

開始日 終了日 "M" "MD" Microsoftのページの代わりの式 EDATEを使う式
2026/01/15 2026/03/10 1 23 9 23
2026/01/15 2026/03/20 2 5 19 5
2026/01/31 2026/02/28 0 28 27 28
2026/01/31 2026/03/01 1 -2 0 1
2024/01/31 2024/03/01 1 -1 0 1
2000/02/29 2026/03/01 312 0 0 1
2025/10/06 2026/10/05 11 29 4 29

2つの代わりの式は次のとおりです(開始日がA2、終了日がB2の場合)。

Microsoftのページの式:  =B2-DATE(YEAR(B2),MONTH(B2),1)
EDATEを使う式:          =B2-EDATE(A2,DATEDIF(A2,B2,"M"))

Microsoftのページの式は、終了日からその月の1日を引く式です。開始日を使わないので、開始日が月の1日のときに「満月数の残りの日数」と一致します(2015/04/01 → 2026/10/05 では "MD" もこの式も 4)。

開始日が月の途中のときは、EDATEを使う式が向いています。「開始日から満月数だけ進めた日」を終了日から引くので、負の値になりません。1月31日から3月1日は、1か月後が2月28日、そこから1日で「1か月と1日」になります。

開始日が終了日より後のとき

Microsoft サポートのページでは、開始日が終了日より後だと #NUM! になると説明されています。Calcではエラー(Err:502)になりました。順番が入れ替わる可能性がある表では、=DATEDIF(MIN(A2,B2),MAX(A2,B2),"M") のように小さいほうを開始日にします。

月末と月初を求める:EOMONTHとEDATEの違い

=EOMONTH(開始日,月) は、指定した月数だけ前後した月の最終日を返します。=EDATE(開始日,月) は、指定した月数だけ前後した同じ日を返します。

1月31日の1か月後はどうなるか

数式 結果 補足
=EDATE(DATE(2026,1,31),1) 2026/02/28 2月31日は無いので月末に寄る
=EOMONTH(DATE(2026,1,31),1) 2026/02/28 月末
=EDATE(DATE(2024,1,31),1) 2024/02/29 うるう年
=EDATE(DATE(2026,1,30),1) 2026/02/28 30日も月末に寄る
=EDATE(DATE(2026,1,29),1) 2026/02/28 29日も月末に寄る
=EDATE(DATE(2026,1,28),1) 2026/02/28 同じ日
=EDATE(DATE(2026,2,28),1) 2026/03/28 月末ではなく28日のまま
=EOMONTH(DATE(2026,2,28),1) 2026/03/31 月末
=EDATE(DATE(2026,1,31),2) 2026/03/31 元の日付から2か月
=EDATE(EDATE(DATE(2026,1,31),1),1) 2026/03/28 1か月ずつ2回
=EDATE(DATE(2024,2,29),12) 2025/02/28 うるう日の1年後
=EDATE(DATE(2024,2,29),48) 2028/02/29 4年後はうるう日に戻る
=DATE(2026,1,31)+30 2026/03/02 30日後は翌々月になる

EDATEは、一度月末に寄ると元の31日には戻りません。 1月31日から毎月の日付を作るとき、前の月の結果にEDATEを重ねると3月が28日になります。元の日付から EDATE(開始日,1)、EDATE(開始日,2) と月数を増やすか、月末がほしいならEOMONTHを使います。

月末を基準にした日付の作り方

EOMONTHは月末を返すので、そこに日数を足すと「翌月○日」が作れます。

=EOMONTH(A2,0)               → 2026/10/31(当月末)
=EOMONTH(A2,-1)+1            → 2026/10/01(当月1日)
=EOMONTH(A2,0)+10            → 2026/11/10(翌月10日)
=EOMONTH(A2,1)+10            → 2026/12/10(翌々月10日)
=EOMONTH(DATE(2026,12,10),1) → 2027/01/31(年をまたぐ)
=DAY(EOMONTH(A2,0))          → 31(その月の日数)

当月1日は =DATE(YEAR(A2),MONTH(A2),1)、当月末は =DATE(YEAR(A2),MONTH(A2)+1,0) でも同じ結果(2026/10/01、2026/10/31)になりました。

うるう年の判定

2月の末日が29日かどうかで判定できます。

=DAY(EOMONTH(DATE(2024,2,1),0))    → 29
=DAY(EOMONTH(DATE(2026,2,1),0))    → 28
=DAY(EOMONTH(DATE(2028,2,1),0))    → 29
=DAY(EOMONTH(DATE(2100,2,1),0))    → 28
=IF(DAY(EOMONTH(DATE(2028,2,1),0))=29,"うるう年","平年")   → うるう年

2100年は4で割り切れますが平年です。自分で割り算の条件を書くより、EOMONTHに任せると取りこぼしがありません。

営業日を求める:WORKDAYとNETWORKDAYS

NETWORKDAYSは開始日と終了日の両方を数える

=NETWORKDAYS(開始日,終了日,[休日]) は、土日と指定した休日を除いた日数を返します。引き算と違い、開始日と終了日の両方を数えます。

数式 結果 補足
=NETWORKDAYS(DATE(2026,10,5),DATE(2026,10,5)) 1 同じ日(月曜)で1
=NETWORKDAYS(DATE(2026,10,5),DATE(2026,10,9)) 5 月曜から金曜
=DATE(2026,10,9)-DATE(2026,10,5) 4 引き算は4
=NETWORKDAYS(DATE(2026,10,5),DATE(2026,10,9))-1 4 開始日を数えない場合
=NETWORKDAYS(DATE(2026,10,3),DATE(2026,10,4)) 0 土曜から日曜
=NETWORKDAYS(DATE(2026,10,9),DATE(2026,10,5)) -5 開始日が後だと負の数
=NETWORKDAYS(DATE(2026,10,1),DATE(2026,10,31)) 22 10月の平日
=NETWORKDAYS(DATE(2026,10,1),DATE(2026,10,31),$H$2:$H$7) 21 10/12を休日として除く
=NETWORKDAYS(DATE(2026,10,12),DATE(2026,10,12),$H$2:$H$7) 0 休日だけの期間
=NETWORKDAYS(DATE(2026,12,28),DATE(2027,1,4),$H$2:$H$7) 3 12/28、1/1、1/4

「作業にかかる日数」は両端を数える形が合い、「今日から期限まであと何営業日」は開始日を数えない形(-1)が合います。どちらの数え方かを決めてから式を選びます。

最後の行で1月1日が営業日として数えられているのは、休日リストに2027年の日付を入れていないためです。年をまたぐ計算では、翌年の休日もリストに足します。

WORKDAYは開始日の翌営業日から数える

=WORKDAY(開始日,日数,[休日]) は、開始日から指定した営業日数だけ前後した日付を返します。

数式 結果 補足
=WORKDAY(DATE(2026,10,9),1) 2026/10/12 金曜の1営業日後は月曜
=WORKDAY(DATE(2026,10,9),1,$H$2:$H$7) 2026/10/13 10/12が休日なので火曜
=WORKDAY(DATE(2026,10,5),5) 2026/10/12 月曜の5営業日後は翌週の月曜
=WORKDAY(DATE(2026,10,5),-1) 2026/10/02 負の数で前の営業日
=WORKDAY(DATE(2026,10,5),0) 2026/10/05 0は開始日のまま
=WORKDAY(DATE(2026,10,3),0) 2026/10/03 土曜でも動かない
=WORKDAY(DATE(2026,10,3)-1,1) 2026/10/05 土曜なら次の月曜へ
=WORKDAY(DATE(2026,10,5)-1,1) 2026/10/05 営業日ならその日のまま
=WORKDAY(DATE(2026,10,12)-1,1,$H$2:$H$7) 2026/10/13 休日なら次の営業日へ
=WORKDAY(DATE(2026,10,3)+1,-1) 2026/10/02 土曜なら前の金曜へ
=WORKDAY(DATE(2026,10,5),1.9) 2026/10/06 日数の小数は切り捨て

日数に0を渡しても、休日を営業日にずらしてはくれません。「その日が休みなら次の営業日」は =WORKDAY(日付-1,1,休日)、「休みなら前の営業日」は =WORKDAY(日付+1,-1,休日) と書きます。早見表の「当月の最終営業日」「当月の最初の営業日」はこの形を使っています。

土日以外が休みのとき:WORKDAY.INTLとNETWORKDAYS.INTL

=WORKDAY.INTL(開始日,日数,[週末],[休日]) と =NETWORKDAYS.INTL(開始日,終了日,[週末],[休日]) は、第3引数で休みの曜日を指定します。指定の方法は番号と文字列の2通りです。

週末番号の一覧

番号と曜日の対応は Microsoft サポートの WORKDAY.INTL 関数のページの表です。右の2列は、Calcで求めた計算結果です。

週末番号 休みの曜日 2026/10/05(月)の5営業日後 2026年10月の営業日数
1(省略時) 土曜、日曜 2026/10/12 22
2 日曜、月曜 2026/10/10 23
3 月曜、火曜 2026/10/11 23
4 火曜、水曜 2026/10/12 23
5 水曜、木曜 2026/10/12 22
6 木曜、金曜 2026/10/12 21
7 金曜、土曜 2026/10/12 21
11 日曜のみ 2026/10/10 27
12 月曜のみ 2026/10/10 27
13 火曜のみ 2026/10/11 27
14 水曜のみ 2026/10/11 27
15 木曜のみ 2026/10/11 26
16 金曜のみ 2026/10/11 26
17 土曜のみ 2026/10/11 26

8〜10の番号はありません。数式は =WORKDAY.INTL(DATE(2026,10,5),5,番号) と =NETWORKDAYS.INTL(DATE(2026,10,1),DATE(2026,10,31),番号) です。

週末文字列の一覧

番号の表に無い組み合わせ(水曜と日曜など)は、7文字の文字列で指定します。左から月・火・水・木・金・土・日の順で、1が休み、0が営業日です。

週末文字列 休みの曜日 5営業日後 10月の営業日数
"0000011" 土曜、日曜(番号1と同じ) 2026/10/12 22
"0000001" 日曜のみ(番号11と同じ) 2026/10/10 27
"0010001" 水曜、日曜 2026/10/12 23
"1000001" 月曜、日曜 2026/10/10 23
"0000000" 休みなし 2026/10/10 31
"1111111" 毎日休み #VALUE! 0
"00011"(5文字) 長さが合わない #VALUE! #VALUE!

Microsoft サポートのページには、文字列の長さが7文字でない場合や 0 と 1 以外の文字を含む場合は #VALUE! になること、NETWORKDAYS.INTLで "1111111" を指定すると常に 0 が返ることが書かれています。

休日リストと組み合わせた例です。

=WORKDAY.INTL(DATE(2026,10,5),5,"0010001",$H$2:$H$7)   → 2026/10/13

水曜・日曜と10/12を除いて数えるので、6日・8日・9日・10日・13日の5日目で13日になります。

休日リスト(祝日リスト)の作り方

WORKDAY・NETWORKDAYSの最後の引数には、休みにしたい日付を並べたセル範囲を渡します。祝日はExcelが自動で判定しないので、自分で用意します。

  1. 休日用のシートを1枚作り、A列に日付を縦に並べる。 B列に名称を書いておくと見直しやすくなります。
  2. 国民の祝日を入れる。 内閣府の「国民の祝日について」のページで、昭和30年(1955年)から令和9年(2027年)までの祝日が CSV 形式(syukujitsu.csv)で公開されています。
  3. 会社の休日(年末年始、創立記念日など)を同じ列に足す。
  4. 数式では絶対参照($H$2:$H$7)か、範囲に付けた名前で指定する。 数式を下にコピーしても範囲がずれません。
  5. 年をまたぐ計算に備えて、翌年分まで入れておく。

この記事で使った休日リストです。

日付  名称
2026/10/12  スポーツの日
2026/11/03  文化の日
2026/11/23  勤労感謝の日
2026/12/29  年末休業
2026/12/30  年末休業
2026/12/31  年末休業

10月に当たる休日は10月12日の1日だけなので、10月の営業日数は、この1日だけを渡した =NETWORKDAYS(DATE(2026,10,1),DATE(2026,10,31),DATE(2026,10,12)) でも、リスト全体(H2:H7)を渡した式でも同じ21でした。期間の外にある日付は結果に影響しません。

年度・四半期・曜日を求める

=YEAR(EDATE(A2,-3))                    → 2026(4月始まりの年度)
=YEAR(A2)-(MONTH(A2)<4)                → 2026(同じ結果になる別の書き方)
=ROUNDUP(MONTH(A2)/3,0)                → 4(1月始まりの四半期)
=ROUNDUP(MONTH(EDATE(A2,-3))/3,0)      → 3(4月始まりの四半期)
=MOD(MONTH(A2)-4,12)+1                 → 7(年度の何か月目か)
=WEEKDAY(A2)                           → 2(日曜が1)
=WEEKDAY(A2,2)                         → 1(月曜が1)
=CHOOSE(WEEKDAY(A2),"日","月","火","水","木","金","土")   → 月
=ISOWEEKNUM(A2)                        → 41
=A2-DATE(YEAR(A2),1,0)                 → 278(年初からの通算日)

4月始まりの年度は、日付を3か月戻してから年を取り出すと1つの式で書けます。開始月が違う場合は、戻す月数を「開始月−1」に変えます。

確かめて分かったこと

  • 1月31日の1か月後は、EDATEでもEOMONTHでも2月28日。違いが出るのはその次の月。 EDATEを重ねると3月28日、EOMONTHなら3月31日でした。
  • =DATE(2026,1+1,31) は3月3日になる。 月に1を足す書き方は、月末の日付で翌々月にはみ出します。
  • DATEDIFの "MD" は、2026/01/31 → 2026/03/01 で -2 になった。 Microsoftのページの注意書きどおり、月末をまたぐ日付で負の値が出ます。
  • Microsoftのページにある代わりの式は、開始日を見ない式。 開始日が月の途中だと "MD" とは別の値になるので、開始日からの端数がほしいときはEDATEを使う式が合います。
  • NETWORKDAYSは同じ日どうしで1を返す。 月曜から金曜は5で、引き算の4より1多くなります。
  • WORKDAY(日付,0) は休日でも日付を動かさない。 営業日に寄せるには、1日戻してから1営業日進めます。
  • 2月29日生まれは、平年の3月1日に満年齢が上がる計算になった。

よくある質問

Q. Excelで2つの日付の日数を計算するには? A. 終了日から開始日を引きます。=D2-A2 で81のように日数が返ります。開始日も数えるなら +1 を足します。

Q. DATEDIFとDAYSの違いは? A. DAYSは日数だけを返し、DATEDIFは単位を変えて満年数・満月数も返せます。日数だけなら引き算かDAYS、年齢や勤続年数はDATEDIFの "Y" を使います。

Q. EDATEとEOMONTHの違いは? A. EDATEは同じ日、EOMONTHは月の末日を返します。開始日が2月28日のとき、1か月後はEDATEが3月28日、EOMONTHが3月31日です。

Q. 営業日の計算で祝日が除かれないときは? A. 第3引数(INTLでは第4引数)に休日リストの範囲を指定します。WORKDAYとNETWORKDAYSが自動で除くのは土曜と日曜だけです。

Q. DATEDIFでエラーになって計算できないときは? A. 開始日が終了日より後になっていないかを確かめます。順番が入れ替わる表では、MINとMAXで小さいほうを開始日にします。

まとめ

  • 日数は引き算、月数と年数はDATEDIF、月末はEOMONTH、営業日はWORKDAYとNETWORKDAYS。
  • 月を足すときはEDATE。 DATEの月に足すと、月末の日付で翌々月にはみ出す。
  • 月末を毎月求めるならEOMONTH。 EDATEは一度28日に寄ると31日に戻らない。
  • DATEDIFの "MD" は避け、=終了日-EDATE(開始日,DATEDIF(開始日,終了日,"M")) を使う。
  • NETWORKDAYSは両端を数える。 開始日を数えないなら -1。
  • 休みの日を営業日に寄せるのは WORKDAY(日付-1,1,休日)。
  • 土日以外が休みならINTL。 文字列は月曜始まりの7文字で、1が休み。

参考・出典

  • Microsoft サポート「DATEDIF 関数」https://support.microsoft.com/ja-jp/office/datedif-関数-25dba1a4-2812-480b-84dd-8b32a451b35c
  • Microsoft サポート「EDATE 関数」https://support.microsoft.com/ja-jp/office/edate-関数-3c920eb2-6e66-44e7-a1f5-753ae47ee4f5
  • Microsoft サポート「EOMONTH 関数」https://support.microsoft.com/ja-jp/office/eomonth-関数-7314ffa1-2bc9-4005-9d66-f49db127d628
  • Microsoft サポート「WORKDAY function」https://support.microsoft.com/en-us/office/workday-function-f764a5b7-05fc-4494-9486-60d494efbf33
  • Microsoft サポート「NETWORKDAYS function」https://support.microsoft.com/en-us/office/networkdays-function-48e717bf-a7a3-495f-969e-5005e3eb18e7
  • Microsoft サポート「WORKDAY.INTL 関数」https://support.microsoft.com/ja-jp/office/workday-intl-関数-a378391c-9ba7-4678-8a39-39611a9bf81d
  • Microsoft サポート「NETWORKDAYS.INTL function」https://support.microsoft.com/en-us/office/networkdays-intl-function-a9b26239-4f20-46a1-9ab8-4e925bfd5e28
  • 内閣府「国民の祝日について」https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Excel日付計算の関数一覧|月末・営業日・年齢・期間の数式早見表」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?