エクセルで特定の月が何日あるのか計算したいとき、どのように操作すればよいか迷ってしまうことはありませんか。
月によって28日、29日、30日、31日と日数が異なるため、手動で確認するのは面倒なものです。
この記事では、エクセルで月の日数を自動計算する方法について、関数を使った方法や月末日の取得、月初からの計算までを詳しく解説していきます。
ポイントは
・EOMONTH関数とDAY関数の組み合わせで月の日数を取得
・DATE関数を使った月末日の計算
・うるう年にも対応した自動計算の方法
です。
それでは詳しく見ていきましょう。
エクセルで月の日数を求める方法1【EOMONTH関数とDAY関数の組み合わせ】
エクセルで月の日数を求める最も確実な方法は、EOMONTH関数とDAY関数を組み合わせる方法です。
EOMONTH関数は指定した月の最終日を返す関数で、DAY関数はその日付から日だけを抽出する関数です。
この2つを組み合わせることで、どんな月でも自動的に日数を計算できます。
たとえば、A2セルに「2025/10/23」という日付が入力されているとしましょう。
この日付が含まれる月の日数を求めるには、以下の数式を入力します。
=DAY(EOMONTH(A2,0))

すると、結果として「31」という数値が表示されます。
これは2025年10月が31日まであることを示しています。
この方法の利点は、うるう年も自動的に判定してくれることです。
2月の場合、うるう年なら29、そうでなければ28と正しく計算されます。
EOMONTH関数の第2引数について
EOMONTH関数の第2引数は、基準日から何か月後の月末を求めるかを指定します。
・0を指定すると当月の月末
・1を指定すると翌月の月末
・-1を指定すると前月の月末
となります。
たとえば、翌月の日数を求めたい場合は以下のようにします。
=DAY(EOMONTH(A2,1))

これで、基準日の翌月が何日あるかが計算できます。
操作のポイント【EOMONTH関数で月末日を取得し、DAY関数で日数を抽出】
エクセルで月の日数を求める方法2【DATE関数を使った計算】
DATE関数を使って月の日数を求める方法もあります。
この方法では、翌月の1日から1日を引くことで、当月の最終日を求めるという考え方です。
DATE関数は年・月・日を指定して日付を作成する関数で、日に「0」を指定すると前月の最終日を返すという特性を利用します。
A2セルの日付から、その月の日数を求めるには以下の数式を使います。
=DAY(DATE(YEAR(A2),MONTH(A2)+1,0))

この数式の仕組みを説明しましょう。
・YEAR(A2):セルA2の日付から「年」を取得
・MONTH(A2)+1:「翌月」を計算
・日に「0」を指定:翌月の0日目(=当月の最終日)を取得
・DAY関数:その日付から「日」だけを取り出す
結果として、その月の日数が表示されます。
12月の場合の処理
この方法は12月でも正しく機能します。
12月の場合、MONTH(A2)+1 は13になりますが、DATE関数は自動的に「翌年の1月」として処理するため問題ありません。
たとえば、セルA2に「2025/12/15」と入力されている場合、DATE(2025,13,0) は自動的に「2025年12月31日」と解釈され、結果は「31」となります。
操作のポイント【DATE関数の日に0を指定すると前月末日になる特性を活用】
エクセルで月の日数を求める方法3【年月を指定して日数を取得】
日付データではなく、「年」と「月」をそれぞれ個別に入力して、月の日数を求めたい場合もあります。
たとえば、A2セルに「年(2025)」、B2セルに「月(2)」が入力されている場合です。
この場合は、DATE関数を以下のように使います。
=DAY(DATE(A2,B2+1,0))

これで、指定した年月の日数が計算できます。
2025年2月なら「28」、2024年2月(うるう年)なら「29」と正しく表示されます。

年月を文字列で入力している場合
その際は、YEAR関数とMONTH関数を組み合わせるか、文字列操作関数を使って「年」と「月」を抽出してから計算します。
操作のポイント【年月を個別に指定する場合もDATE関数が便利】
エクセルで月初から月末までの日数を計算する方法
月の日数を求めるだけでなく、月初から月末までの期間を明示的に表示したい場合もあります。
また、特定の日付から月末までの残り日数を計算することも可能です。
月初の日付を取得する
ある日付から、その月の1日(月初)を取得するには、以下の数式を使います。
この数式を使うと、指定した日付が属する「月の初日」を求めることができます。
=DATE(YEAR(A2),MONTH(A2),1)

これで、A2セルの日付が含まれる月の1日が表示されます。
月末の日付を取得する
月末の日付を取得するには、EOMONTH関数を使います。
=EOMONTH(A2,0)

これで、A2セルの日付が含まれる月の最終日が表示されます。
月初から月末までの日数を表示する
月初から月末までの日数は、先に説明した方法と同じです。
=DAY(EOMONTH(A2,0))

これで、その月が何日あるかが表示されます。
特定の日から月末までの残り日数を計算する
一方、今日から月末までの残り日数を求めたい場合は、以下のように計算します。
=EOMONTH(TODAY(),0)-TODAY()

この数式で、今日を含めない場合の月末までの残り日数が求められます。
今日を含めたい場合は、最後に「+1」を追加しましょう。
操作のポイント【月初はDATE関数、月末はEOMONTH関数で取得】
エクセルでうるう年を考慮した月の日数計算
月の日数を計算する際に最も注意が必要なのは2月の処理です。
うるう年の場合は29日、平年の場合は28日となります。
EOMONTH関数やDATE関数を使った計算方法なら、エクセルが自動的にうるう年を判定してくれるため、特別な設定や条件分岐は不要です。
うるう年かどうかを判定する方法
ある年がうるう年かどうかを判定したい場合は、以下の数式が使えます。
=IF(DAY(DATE(A2,2,29))=29,”うるう年”,”平年”)

この数式は、指定した年の2月29日が存在するかどうかで判定しています。
うるう年なら2月29日が存在するため「うるう年」、存在しなければ「平年」と表示されます。

2月だけの日数を簡単に求める
2月の日数だけを求めたい場合は、以下のようにシンプルな数式で対応できます。
=DAY(DATE(A2,3,0))

A2セルに年を入力しておけば、その年の2月が何日あるかが自動計算されます。
操作のポイント【エクセルの日付関数は自動的にうるう年を判定】
エクセルで月の日数が計算できない原因と対策
月の日数を計算しようとしても、うまく計算できない場合があります。
ここでは、よくあるトラブルとその解決方法を説明します。
原因1 データが日付形式になっていない
最も多い原因は、参照しているセルのデータが日付形式ではなく、文字列として入力されていることです。
見た目は日付に見えても、エクセル内部で文字列として認識されている場合、日付関数が正しく動作しません。
対策
セルが文字列か日付かを確認するには、そのセルを選択して数式バーを確認します。
文字列の場合は左揃えで表示され、日付の場合は右揃えで表示されることが多いです。

もし文字列にとして入力されている場合は、DATEVALUE関数を使って日付形式に変換しましょう。
=DAY(EOMONTH(DATEVALUE(A2),0))
この数式を使えば、文字列として入力された日付からでも、正しく月の日数を求められます。
原因2 エラー値が返される
#VALUE!や#NUM!などのエラーが表示される場合があります。
これは、参照しているセルが空白だったり、無効な日付データだったりすることが原因です。
対策
IFERROR関数を組み合わせることで、エラーが発生した場合の表示を制御できます。
=IFERROR(DAY(EOMONTH(A2,0)),””)
この数式により、エラーの場合は空白を表示し、正常な場合のみ月の日数が表示されます。
原因3 EOMONTH関数が使えない
古いバージョンのエクセルでは、EOMONTH関数が使用できない場合があります。
その場合は、DATE関数を使った代替方法で対応できます。
対策
EOMONTH関数の代わりに、以下の数式を使用します。
=DAY(DATE(YEAR(A2),MONTH(A2)+1,0))
この方法なら、どのバージョンのエクセルでも動作します。
原因4 12月の計算が正しくない
12月の日数を計算する際、「翌月が13月になってしまうのでは?」と心配する人がいるかもれません。
しかし、エクセルの日付関数は自動的に年をまたいで処理するため、特別な処理は必要ありません。
対策
通常の数式をそのまま使えば問題ありません。
もし不安な場合は、IF文で12月だけ特別に処理することもできますが、実際には不要です。
操作のポイント【データ形式の確認が最重要、エラー処理にはIFERRORを活用】
まとめ エクセルで月の日数の自動計算(月末・関数・月初・その月は何日あるか)する方法
エクセルで月の日数を求める方法をまとめると、以下のようになります。
・EOMONTH関数とDAY関数を組み合わせる方法が最も簡単で確実
・DATE関数を使った計算方法も有効で、古いバージョンでも動作可能
・年月を個別に指定する場合もDATE関数で対応できる
・月初はDATE関数、月末はEOMONTH関数で取得できる
・うるう年も自動的に判定されるため特別な条件分岐は不要
・データが文字列の場合は、DATEVALUE関数で変換して対応
これらの方法を状況に応じて使い分けることで、どの月でも正確に日数を計算できます。
特にEOMONTH関数とDAY関数の組み合わせは、シンプルで覚えやすく、うるう年も自動判定してくれるため、最もおすすめの方法です。
月の日数を自動計算できるようになれば、勤怠管理での稼働日数の集計や、月別の売上目標の設定、プロジェクトのスケジュール管理など、さまざまな業務で役立ちます。
また、給与計算や請求書作成など、月の日数を基にした計算が必要な場合でも、これらの関数を使いこなせば作業効率が大幅に向上できます。
ぜひこれらのテクニックを活かして、エクセル作業をより正確かつスムーズに進めていきましょう。


コメント