excel

【Excel】エクセルで月数を計算する方法(開始日・終了日・期間を求める関数)

エクセルで月数を計算するDATEDIF関数 - 数式の入力とオートフィル
当サイトでは記事内に広告を含みます

Excelで開始日と終了日から月数を計算したいときは、単純に日付を引き算するだけでは、月ごとの日数の違いや月末の扱いに対応しにくいことがあります。

たとえば、2026年1月31日から2026年2月28日までを何か月と数えるかは、契約期間、勤続年数、プロジェクト期間など、集計の目的によって答えが変わります。

そこで役立つのが、完了した月数を求めるDATEDIF関数、月をまたいだ回数を数えるYEAR関数とMONTH関数、端数を含めた期間を求めるYEARFRAC関数です。

月数計算で使い分ける基本

・満了した月数を求める場合はDATEDIF関数

・開始月と終了月を含めて月数を数える場合はYEAR関数とMONTH関数

・小数を含む年数や月数を扱う場合はYEARFRAC関数

この記事では、1行目に見出しがあり、A列に開始日、B列に終了日、C列に月数を表示するサンプルを使って、実務で使いやすい数式と注意点を解説します。

日付が正しく入力されているかを確認しながら、目的に合う月数の数え方を選びましょう。

 

エクセルで月数を計算するDATEDIF関数

それではまず、開始日から終了日までに完了した月数を求めるDATEDIF関数について解説していきます。

開始日 終了日 月数
2026/1/15 2026/4/14 2
2026/1/15 2026/4/15 3

 

DATEDIF関数の基本構文

DATEDIF関数は、二つの日付の差を年、月、日といった単位で計算する関数です。

C2セルには、次の数式を入力します。

=DATEDIF(A2,B2,”m”)

この数式のA2は開始日、B2は終了日、最後のmは月単位で差を返す指定です。

mを指定したDATEDIF関数は、満了した月だけを整数で返します。

そのため、1月15日から4月14日までは3か月目に入っていても、満3か月には達していないため結果は2になります。

一方で、1月15日から4月15日であれば、ちょうど3か月が完了するため結果は3です。

契約の満了月数、勤務月数、支払い済みの月数など、開始日と同じ日付を迎えた時点で1か月を完了とする集計に向いています。

 

数式の入力とオートフィル

続いては、入力した数式を複数行へコピーする操作を確認していきます。

まずC2セルを選択し、数式バーまたはセルにDATEDIF関数を入力してEnterキーを押します。

エクセルで月数を計算するDATEDIF関数 - 数式の入力とオートフィル

計算結果が表示されたら、C2セル右下の小さな四角形であるフィルハンドルにマウスポインターを合わせます。

ポインターが黒い十字に変わった状態で下方向へドラッグすると、相対参照のまま数式をコピーできます。

A3とB3、A4とB4のように行番号だけが自動で変わるため、各行の開始日と終了日に対応した月数が表示されます。

データの途中に空白行がない場合は、フィルハンドルをダブルクリックしてコピーする方法も便利です。

DATEDIF関数は関数の候補一覧に表示されない場合がありますが、Excelで利用できる関数です。

スペル、開始日、終了日、単位の指定を正しく入力することが大切です。

 

終了日が開始日より前の場合

続いては、DATEDIF関数でエラーが出る条件を確認していきます。

DATEDIF関数では、終了日が開始日より前になると、通常はNUMエラーが表示されます。

エクセルで月数を計算するDATEDIF関数 - 終了日が開始日より前の場合

入力ミスが起こりうる一覧表では、IF関数で日付の順番を判定してから計算すると安心です。

=IF(B2<A2,”終了日を確認”,DATEDIF(A2,B2,”m”))

この数式では、B2の終了日がA2の開始日より小さいときに、計算を行わず終了日を確認という文字を表示します。

日付の前後関係が正しい場合だけDATEDIF関数が実行されるので、表全体にエラーが並ぶことを防げます。

日付が文字列として入力されている場合にも計算できないため、セルを右寄せにして日付形式になっているか確認しましょう。

【操作のポイント】DATEDIF関数は満了月数を求めるための関数です。月をまたいだ回数や開始月を含む月数を求める目的では、別の数式を選びます。

 

開始月と終了月を含める月数計算

続いては、開始月と終了月をそれぞれ1か月として数える月数計算を確認していきます。

開始日 終了日 開始月と終了月を含む月数
2026/1/31 2026/2/1 2
2026/1/1 2026/4/30 4

 

YEAR関数とMONTH関数の数式

続いては、年をまたぐ日付にも対応できる基本の数式を確認していきます。

C2セルに入力する数式は次のとおりです。

=(YEAR(B2)-YEAR(A2))*12+MONTH(B2)-MONTH(A2)+1

YEAR関数は日付から年を取り出し、MONTH関数は月を取り出します。

年の差に12を掛けて月数へ変換し、終了月と開始月の差を加算した後、開始月そのものを1か月として含めるために最後に1を加えます。

たとえば2025年11月から2026年2月の場合、年の差は1年なので12か月です。

そこへ終了月の2と開始月の11との差を加えると3になり、さらに1を加えることで4か月となります。

月単位で案件を管理する表や、掲載月数、利用月数を数える表では、この考え方が使いやすいでしょう。

 

同じ月内の日付の扱い

続いては、開始日と終了日が同じ月にあるケースを確認していきます。

2026年6月1日から2026年6月30日までのように、開始日と終了日が同じ月なら、この数式の結果は1です。

開始月と終了月を含める月数計算 - 同じ月内の日付の扱い

日数が1日だけであっても、その日が属する月を利用月として数える運用では自然な結果になります。

DATEDIF関数では0か月になる条件でも、月単位の管理では1か月として扱いたいことがあります。

この違いを理解せずに関数を選ぶと、契約台帳や請求対象月の集計で件数がずれる原因になります。

開始月を含める月数は、日数の経過量ではなく、カレンダー上で対象となった月の個数を数える考え方です。

 

月をまたいだ回数だけを数える方法

続いては、開始月を含めずに月の境目を越えた回数だけを求める方法を確認していきます。

開始月と終了月を含む数式から、最後の1を削除します。

=(YEAR(B2)-YEAR(A2))*12+MONTH(B2)-MONTH(A2)

この場合、2026年1月31日から2026年2月1日までの結果は1です。

開始月と終了月を含める月数計算 - 月をまたいだ回数だけを数える方法

一方で、2026年1月1日から2026年1月31日までは、同じ月内なので0になります。

月次報告書の作成回数、月替わりの回数、基準月からの経過月といった集計では、この式が適します。

月数という言葉だけでは計算ルールを判断できないため、開始月を含めるかどうかを先に決めることが重要です。

【操作のポイント】開始月と終了月を含める場合は最後に1を加えます。月境界を通過した回数だけを求める場合は1を加えません。

 

端数を含む期間の月数計算

続いては、1.5か月や2.8か月のように端数を含めた期間を求める方法を確認していきます。

開始日 終了日 小数の月数
2026/1/1 2026/4/1 約2.96
2026/1/15 2026/3/31 約2.50

 

YEARFRAC関数による年数の取得

続いては、日付差を年数として返すYEARFRAC関数を確認していきます。

YEARFRAC関数は、開始日と終了日の間隔を年の小数で返す関数です。

月数として表示したい場合は、YEARFRAC関数の結果に12を掛けます。

=YEARFRAC(A2,B2,1)*12

最後の1は、実際の日数と実際の年の日数を基準に計算する指定です。

うるう年を含む期間でも、実際の暦日をもとにした比率が計算されます。

日割りの利用期間を月換算したい場合や、平均的な月数を把握したい場合に利用しやすい関数です。

ただし、会社の規定で1か月を30日とするなど、独自の計算基準がある場合には、その規定に合わせた式を使う必要があります。

 

小数点以下の表示桁数

続いては、計算した小数の月数を見やすく表示する方法を確認していきます。

YEARFRAC関数の結果には小数点以下が長く表示されることがあるため、ROUND関数で桁数を整えると一覧表が読みやすくなります。

=ROUND(YEARFRAC(A2,B2,1)*12,2)

この数式では、月数を小数第2位までに丸めます。

小数第1位まででよい場合は、最後の2を1に変更します。

切り上げが必要ならROUNDUP関数、切り捨てが必要ならROUNDDOWN関数を使い分けましょう。

表示形式で小数点を隠すだけでは、セル内の値そのものは変わりません。

後から合計や請求額の計算に使う場合は、表示だけを整えたいのか、計算結果自体を丸めたいのかを区別することが大切です。

 

Excel画面での数式入力

続いては、YEARFRAC関数をセルへ入力し、オートフィルで展開する画面を確認していきます。

月数計算.xlsx – Excel− □ ×
ホーム挿入ページ レイアウト数式データ
B 太字罫線中央揃え%
C2fx=ROUND(YEARFRAC(A2,B2,1)*12,2)
A B C
1 開始日 終了日 月数
2 2026/1/15 2026/3/31 2.50
3 2026/4/1 2026/8/20 4.62
➤
C2の数式を下へコピー

数式バーにYEARFRAC関数を入力し、C2セルの値を確認してからフィルハンドルで下へコピーします。

赤枠で示したC2セルが計算の起点です。

日付列の表示形式は、年、月、日が読み取れる形式に整えておくと、入力間違いにも気付きやすくなります。

【操作のポイント】端数を含む月数はYEARFRAC関数に12を掛けて求めます。請求ルールや社内規定に応じて、四捨五入、切り上げ、切り捨てを追加します。

 

月末日と日付差の注意点

続いては、月末日やうるう年を含む月数計算で確認したい注意点を解説していきます。

開始日 終了日 確認したい点
2026/1/31 2026/2/28 月末同士の判定
2024/2/29 2024/3/31 うるう年の判定

 

月末日を同じ扱いにする考え方

続いては、1月31日から2月28日までのような月末日の扱いを確認していきます。

DATEDIF関数は日付の数値を基準に満了月数を判定するため、月末同士であっても、期待する結果と運用上の考え方が一致するかを確認する必要があります。

月末から翌月末までを1か月と扱う契約では、単純な日付比較だけでなく、月末であることを判定する条件が必要になる場合があります。

EOMONTH関数を使うと、指定した日付がその月の末日かどうかを確認できます。

=A2=EOMONTH(A2,0)

結果がTRUEなら、A2は月末日です。

月末締めの契約や賃料計算では、個別の社内ルールを確認したうえで計算式を決めましょう。

 

日数から概算月数を求める方法

続いては、日数を30日で割って概算の月数を求める方法を確認していきます。

=(B2-A2)/30

この式は開始日から終了日までの日数を30で割るため、1か月を常に30日とみなす運用で使えます。

ただし、実際のカレンダーには28日、29日、30日、31日の月があるため、暦に沿った正確な月数を求める式ではありません。

作業工数の概算や内部の目安には使えても、契約金額や給与などの重要な計算へそのまま使う際は注意が必要です。

月数を正確に扱う必要がある場合は、DATEDIF関数またはYEARFRAC関数を優先しましょう。

 

日付形式とシリアル値の確認

続いては、月数が計算できないときに確認する日付データの形式を解説していきます。

Excelの日付は内部的には連続した数値で管理されており、この数値はシリアル値と呼ばれます。

見た目が2026/4/1のように表示されていても、文字列として保存されている場合、関数は正しい日付として認識できません。

セルを選択して数式バーを確認し、文字列の先頭にアポストロフィが付いていないか、左寄せになっていないかを確認します。

日付を再入力して右寄せ表示になれば、通常は日付の数値として認識されています。

CSVから貼り付けたデータでは形式の不一致が起こりやすいため、DATEVALUE関数や区切り位置機能で変換する方法もあります。

【操作のポイント】月末やうるう年を含む日付は、数件のテストデータで結果を確認してから一覧表へ数式を展開します。

 

用途別の月数関数の使い分け

続いては、Excelで月数を計算する関数を用途別に使い分ける考え方を確認していきます。

目的 主な数式 結果の特徴
満了月数 DATEDIF 整数の完了月数
対象月の個数 YEARとMONTH 開始月と終了月を含められる
端数を含む期間 YEARFRAC 小数の月数

 

契約期間と利用期間の集計

続いては、契約期間やサービス利用期間の月数を集計するケースを確認していきます。

契約開始日と契約終了日を基準に、満了した月だけを数えるならDATEDIF関数が適します。

一方で、1月中に開始して1月中に終了した契約でも1か月分として請求するなら、YEAR関数とMONTH関数を組み合わせた式が向いています。

請求対象月を数えるのか、実際に経過した満了月数を数えるのかで関数が変わります。

表の見出しにも、満了月数、請求対象月数、経過月数など、計算の意味が分かる名称を付けると後から確認しやすくなります。

 

勤続年数と在籍月数の算出

続いては、入社日と基準日から在籍月数を求めるケースを確認していきます。

基準日を今日の日付にする場合は、終了日の代わりにTODAY関数を使用できます。

=DATEDIF(A2,TODAY(),”m”)

この式を使うと、ファイルを開いた日を基準に、入社日からの満了月数が更新されます。

ただし、TODAY関数はブックを再計算するたびに結果が変わるため、過去時点の在籍月数を記録したい帳票には固定した基準日を入力したほうがよいでしょう。

人事データで使う場合は、休職期間や除算期間を含めるかどうかも別途定義する必要があります。

 

エラーを空白にするIFERROR関数

続いては、未入力行がある一覧表でエラー表示を抑える方法を確認していきます。

=IFERROR(DATEDIF(A2,B2,”m”),””)

この数式では、開始日または終了日が未入力でエラーになった場合に、空白を表示します。

ただし、日付の入力順が逆といった修正すべきエラーまで見えなくなる可能性があります。

入力途中の表ではIFERROR関数が便利ですが、完成後は異常値が隠れていないか確認することが重要です。

より丁寧に管理するなら、空白の場合と終了日が開始日より前の場合をIF関数で分けて表示する方法も有効です。

【操作のポイント】月数計算では、関数の正しさだけでなく、契約、請求、在籍などの業務ルールに合った数え方を選びます。

 

まとめ エクセルで開始日と終了日から月数を求める関数

Excelで開始日と終了日から月数を計算する方法は、何を月数として扱うかによって選ぶ関数が変わります。

満了した月数を求めるならDATEDIF関数を使い、C2セルには=DATEDIF(A2,B2,”m”)と入力します。

開始月と終了月を含む対象月数を求めるなら、YEAR関数とMONTH関数を組み合わせ、最後に1を加えます。

端数を含む月数を求めるなら、YEARFRAC関数に12を掛け、必要に応じてROUND関数で桁数を整えましょう。

月末日、うるう年、日付が文字列になっているケースでは、予想と違う結果が出ることがあります。

最初に少数のサンプルデータで計算結果を確認し、用途に合うルールを決めてからオートフィルで展開することが、正確なExcel集計につながります。