Excelで開始日と終了日のあいだに何か月あるのかを計算したい場面は、契約期間、勤続年数、ローン返済、売上の集計などでよくあります。
DATEDIF関数は便利ですが、月末をまたぐ日付や端数の扱いに迷うこともあるでしょう。
そこでこの記事では、DATEDIF以外で月数を計算する代表的な方法を、経過月数、月数の引き算、月初基準、月末基準に分けて解説します。
月数計算で先に決めたいポイント
・日付の差を満月数として求めるのか
・開始月と終了月を何か月分として数えるのか
・月末や同月内のデータをどう扱うのか
数式は目的に合わせて選ぶことで、後から集計条件を変更するときも修正しやすくなります。
タイトルの次は、まず実務で使いやすい結論から確認していきましょう。
エクセルで月数を計算する方法1【YEAR関数とMONTH関数による月数引き算】
それではまず、開始日と終了日の年・月を分けて引き算する方法について解説していきます。
| 開始日 | 終了日 | 月数 |
|---|---|---|
| 2024/4/15 | 2025/9/10 | 17 |
この方法は、日ではなく年月の差だけを月数として計算したい場合に向いています。
=YEAR(C2)*12+MONTH(C2)-YEAR(B2)*12-MONTH(B2)
サンプルデータでは、1行目に見出しがあり、B列に開始日、C列に終了日、D列に月数を入力する前提です。
年月を通算月に変換する考え方
年をそのまま引くだけでは、年をまたぐ月数を正しく求められません。
たとえば2024年4月から2025年9月までは、年差が1、月差が5ですが、答えは6か月ではなく17か月です。
そこで年を12倍して月を加え、年月を連続した月番号のように扱います。
YEAR(C2)に12を掛けてMONTH(C2)を加えることで、終了日の通算月を作れます。
開始日の通算月を同じように作り、終了日側から引けば、年をまたぐ場合も一つの式で計算できます。
この式では日付の「日」の部分を参照しないため、4月1日でも4月30日でも同じ4月として扱われます。
月単位で予算や請求対象を管理する表では、この割り切りが実用的です。
数式を入力してオートフィルする操作
D2セルを選択し、数式バーまたはセル内に数式を入力します。
入力後にEnterキーを押すと、開始日と終了日の年月差がD2に表示されます。
続いてD2セル右下のフィルハンドルを下へドラッグすると、3行目以降にも同じ計算式をコピーできます。
データ件数が多い場合は、フィルハンドルをダブルクリックすると、隣接するデータ列の最終行付近まで自動で数式が入ります。
日付が文字列として保存されていると計算結果がおかしくなるため、セルの表示形式だけでなく値も日付であることを確認しましょう。
【操作のポイント】数式はD2にだけ入力し、下方向へオートフィルすると参照行が自動で切り替わります。
同じ月をゼロか一か月で扱う基準
この計算式では、開始日と終了日が同じ月なら結果は0です。
2025年9月1日から2025年9月30日までのように、同じ月内に期間が収まるケースも0か月になります。
一方で、利用月数や請求月数として開始月を1か月目に数えたい場合は、式の末尾に1を加えます。
=YEAR(C2)*12+MONTH(C2)-YEAR(B2)*12-MONTH(B2)+1
この式なら2025年9月内の期間は1か月、2024年4月から2025年9月までは18か月です。
経過した月数と、対象となる月の件数は別の考え方なので、表の見出しにも「経過月数」「対象月数」などを明記すると混乱を防げます。
【操作のポイント】同月を1か月と数える運用では、通算月の差に1を足します。
エクセルで月数を計算する方法2【YEARFRAC関数とINT関数による経過月数】
続いては、日単位の経過期間を基準に月数へ換算する方法を確認していきます。
| 開始日 | 終了日 | 換算月数 |
|---|---|---|
| 2025/1/1 | 2025/7/20 | 6 |
YEARFRAC関数は、二つの日付の差を年数の小数として返します。
その結果に12を掛けてINT関数で小数部分を切り捨てると、満了している月数に近い整数値を作れます。
=INT(YEARFRAC(B2,C2,1)*12)
YEARFRAC関数の引数と基準日数
YEARFRAC関数は、開始日、終了日、基準日数の順に指定します。
式の末尾にある1は、実際の日数を基準に年数を計算する指定です。
うるう年を含む期間では日数が変わるため、年を常に365日とみなすよりも実際の経過に近い結果になります。
ただし、契約書や社内規程に30日を1か月とする定めがある場合は、別の計算方法が必要になることがあります。
一般的な在籍期間や利用実績の一覧では、開始日から終了日までの日数を自然に反映できる点が利点です。
月初から月末までの暦月だけを数える式ではないため、目的を確認してから採用しましょう。
【操作のポイント】YEARFRACの第3引数を1にすると、実日数を使った年数換算になります。
INT関数で端数月を除く方法
YEARFRACの計算結果は、0.5年や1.25年のような小数になります。
月数として小数を残したくないときは、12を掛けた後でINT関数を使います。
INT関数は小数点以下を切り捨てる関数です。
たとえば6.6か月相当なら6、11.9か月相当なら11を返します。
切り上げではなく切り捨てなので、途中の月を完了月として数えたくないケースに適しています。
反対に、1日でも利用した月を1か月に含めるなら、ROUNDUP関数や通算月の差に1を加える方法を検討してください。
【操作のポイント】INTは端数を切り捨てるため、請求月数のルールとは一致しない場合があります。
小数月を表示する計算式
経過月数を小数第1位まで表示したい場合は、INT関数を外してROUND関数を使います。
=ROUND(YEARFRAC(B2,C2,1)*12,1)
この数式は、経過期間を月換算した値を小数第1位まで四捨五入して表示します。
工数の配分、利用期間の分析、日割り相当額の確認などでは、整数にせず小数月を残すほうが判断しやすいこともあります。
表示形式を「標準」のままにすると桁数が多くなることがあるため、ROUND関数であらかじめ桁数を決めると表が整います。
【操作のポイント】分析用にはROUND、満了月数の判定にはINTという使い分けが便利です。
エクセルで月数を計算する方法3【EOMONTH関数による月末基準】
続いては、各月の月末を基準に月数を数えるEOMONTH関数の使い方を確認していきます。
| 開始日 | 終了日 | 月末基準月数 |
|---|---|---|
| 2025/2/15 | 2025/5/2 | 3 |
月次売上や締め日ベースの管理では、日付そのものより「どの月に属するか」をそろえることが重要です。
EOMONTH関数で両方の日付を月末日にそろえると、月をまたいだ回数を明確に計算できます。
=(YEAR(EOMONTH(C2,0))-YEAR(EOMONTH(B2,0)))*12+MONTH(EOMONTH(C2,0))-MONTH(EOMONTH(B2,0))
EOMONTH関数で月末日をそろえる仕組み
EOMONTH関数は、指定した日付から何か月後または何か月前の月末日を返す関数です。
EOMONTH(B2,0)ならB2の日付が属する月の末日を返します。
2025年2月15日なら2025年2月28日、2025年4月10日なら2025年4月30日という結果です。
開始日と終了日を月末日へ統一すると、月の日数が28日、30日、31日と異なっていても比較しやすくなります。
月末締めの請求、在庫、売上集計では月末基準が特に扱いやすいでしょう。
【操作のポイント】EOMONTHの第2引数を0にすると、その日付が属する月の月末を取得できます。
月末基準の数式入力イメージ
画面ではD2セルに数式を入力し、結果を確認してからフィルハンドルで下へコピーします。
数式が長く見える場合でも、EOMONTHで月末化した年月差を求めているだけです。
開始日と終了日が同じ月なら0、翌月なら1という結果になります。
【操作のポイント】数式をD2へ入力した後は、フィルハンドルで下方向にコピーします。
月を含めて数えたい場合の調整
月末基準の差は、月をまたいだ回数を返すため、開始月と終了月を両方含める件数ではありません。
たとえば2月15日から5月2日までを、2月、3月、4月、5月の4か月として数えたい場合は、最後に1を加えます。
=(YEAR(EOMONTH(C2,0))-YEAR(EOMONTH(B2,0)))*12+MONTH(EOMONTH(C2,0))-MONTH(EOMONTH(B2,0))+1
月次レポートの対象月数では、開始月と終了月を含める数え方が使われることがあります。
ただし、請求や契約の判断では社内ルールが優先されるため、数式だけで決めずに定義を確認しましょう。
【操作のポイント】月の件数を求める場合は、月末基準の差に1を加えるかを判断します。
エクセルで月数を計算する方法4【DATEDIFを使わない日数割り算】
続いては、日数を30日または平均日数で割って月数の目安を出す方法を確認していきます。
| 開始日 | 終了日 | 30日換算月数 |
|---|---|---|
| 2025/1/10 | 2025/4/25 | 3.5 |
日付同士を引き算すると、間の日数を取得できます。
その日数を30で割れば、30日を1か月とみなす簡易的な月数計算が可能です。
=ROUND((C2-B2)/30,1)
日付の引き算で経過日数を求める方法
Excelの日付は内部的には連番として管理されています。
そのため、終了日から開始日を引くと、二つの日付の差を日数として求められます。
C2-B2の部分が経過日数であり、2025年1月10日から2025年4月25日なら105日です。
この日数を30で割ると3.5となり、約3.5か月と把握できます。
日割りの感覚で月数を把握したい分析用途では、見通しのよい式です。
【操作のポイント】終了日から開始日を引く順番にすると、正の経過日数になります。
30日換算と平均日数換算の違い
30日換算は計算が簡単ですが、実際の暦月とは一致しません。
正確な平均月数に近づけたい場合は、1年365日を12か月で割った約30.4167日を使う方法もあります。
=ROUND((C2-B2)/(365/12),1)
うるう年をまたぐ長期間の分析では、YEARFRAC関数のほうが自然な結果になる場合があります。
一方、月を30日として給与や手当を計算するルールがあるなら、30で割る式が運用に適合します。
【操作のポイント】30日換算は規程向け、平均日数換算は分析向けとして考えると選びやすいです。
切り上げと切り捨ての使い分け
途中の月をどう扱うかによって、ROUND、ROUNDUP、ROUNDDOWNを使い分けます。
端数をすべて1か月へ切り上げたい場合は、ROUNDUP関数を使います。
=ROUNDUP((C2-B2)/30,0)
端数を含めない場合はROUNDDOWN関数、最も近い整数へ丸める場合はROUND関数が適しています。
同じ期間でも丸め方によって結果が変わるため、請求金額や評価に使う表ではルールをセルの近くに記載すると安全です。
【操作のポイント】端数月を必ず一か月と数えるならROUNDUPを使用します。
エクセルで月数を計算する方法5【月初日変換による月次集計】
続いては、日付を月初日に変換して月別のデータを扱いやすくする方法を確認していきます。
| 元の日付 | 月初日 | 表示例 |
|---|---|---|
| 2025/9/18 | 2025/9/1 | 2025年9月 |
月別集計では、同じ月の日付を一つの基準日へそろえると、集計や比較が簡単になります。
月初日を作る数式は、月単位での差分やピボットテーブルの分類にも役立ちます。
=DATE(YEAR(B2),MONTH(B2),1)
DATE関数で月初日を作る仕組み
DATE関数は年、月、日を指定して日付を作る関数です。
YEAR関数で元の日付の年を取得し、MONTH関数で月を取得し、日には1を指定します。
これにより、2025年9月18日は2025年9月1日へ変換されます。
表示形式をyyyy年m月に変更すれば、セルには2025年9月のように見せることもできます。
値は月初日のまま保持されるため、並べ替えや条件指定にも使いやすい点がメリットです。
【操作のポイント】月初日を作った列は、月別集計用の補助列として残しておくと便利です。
月初日同士の差で月数を求める方法
開始日と終了日を月初日へそろえた後は、YEAR関数とMONTH関数による通算月の差を使えます。
日付の違いを除外して、月単位の変化だけを見たいときに適した方法です。
開始月と終了月を含めるかどうかは、月初日へ変換した後でも同じ考え方で判断します。
月別の退会数、顧客数、案件数の推移を作るときは、日付の細かな差より月の所属が重要になることが多いでしょう。
【操作のポイント】月初日を比較対象にすると、日付の違いによる判定の揺れを減らせます。
エラーと入力漏れの対処
開始日または終了日が空白の行に数式を入れると、意図しない値やエラーが出ることがあります。
空白なら空白を返したい場合は、IF関数で条件を付けます。
=IF(OR(B2=””,C2=””),””,YEAR(C2)*12+MONTH(C2)-YEAR(B2)*12-MONTH(B2))
この式では、B2またはC2のどちらかが空白なら結果も空白になります。
入力途中の行を含む一覧表では、空白判定を組み込むと見た目が整います。
終了日が開始日より前の場合は負の値になるため、入力ミスのチェックにも活用できます。
【操作のポイント】空白行がある表ではIF関数を追加し、不要な計算結果を表示させないようにします。
まとめ エクセルで月数を計算する方法(DATEDIF以外・月数引き算・経過期間)
Excelで月数を計算する場合、何を一か月として数えるのかを最初に決めることが大切です。
年月だけの差を知りたいときは、YEAR関数とMONTH関数を使った通算月の引き算が分かりやすい方法です。
実際の日数を反映した経過月数ならYEARFRAC関数、月末締めならEOMONTH関数、30日単位の簡易計算なら日付の引き算を使えます。
同月を0か月にするか1か月にするか、端数を切り上げるかどうかで式は変わります。
まずは表の目的と社内ルールを確認し、対象月数なのか経過月数なのかに合う数式を選びましょう。
適切な計算式を一度作成してオートフィルすれば、大量の日付データも効率よく月数へ変換できます。