「指定した月の日数を計算するにはどうしたらいいですか?」
「今月が何日あるのかを調べるにはどうしたらいいのでしょうか?」
というご質問をいただくことがあります。
Excelの日数計算の定番といってもいいご質問の一つです。
何日間あるのか、という考えをすると引き算をする必要が出てきて、計算式も複雑になりがちですが、指定した月の最終日(月末の日)が何日なのかがわかれば、それが指定した月の日数と同じことになります。
※B1セルに年、B2セルに月を入力したときに日数を計算する例 「=DAY(DATE(B1,B2+1,0))」
サンプルファイルの「年・月を別々に入力」シートのB3セルに上記と同じ計算式が入力してありますので、年を指定するB1セルの値を「1900」〜「9999」、月を指定するB2セルの値を「1」から「12」の値に変更して、B3セルの値がどうなるのかご確認ください。
▼サンプルファイル(002675.xls 14KByte)ダウンロード
「DATE(B1,B2+1,0)」は、以前ご紹介した月末の日付を取得する計算方法です。
DATE関数は日付(のシリアル値)を取得する関数で、第2引数(「B2+1」の部分)は、月を指定するのですが、B2セルに「1」を加えていることで、指定した翌月を指示していることになります。
DATE関数の第3引数(「0」の部分)は、本来「1」から「31」の日を表す数値を指定するわけで、もし
「DATE(B1,B2+1,1)」
としていれば指定した年・月の翌月の1日の日付が取得できます。
この第3引数に、「1」から「1」をマイナスした「0」を指定することで、
「DATE(B1,B2+1,0)」
は指定した年月の翌月の1日の、前日の日付(すなわち指定した当月の最終日)を取得できることになります。
DAY関数は、引数に指定された日付の日だけを取得する関数ですから、
「DAY(DATE(B1,B2+1,0))」
は、指定した日付の翌月の1日の、前日の日付の日(すなわち指定した当月の日数)を取得できるわけです。
サンプルファイルの「日付を入力」シートでは、B1セルに日付を入力したときに、B3セルにその月の日数を計算する
「=DAY(DATE(YEAR(B1),MONTH(B1)+1,0))」
という計算式を入力しています。
この「=DAY(DATE(YEAR(B1),MONTH(B1)+1,0))」という数式も考え方自体は、年・月を別々のセルに指定する「=DAY(DATE(B1,B2+1,0))」と同じことです。
なお、Excelは本当は存在しないの「1900年2月29日」が存在することとして作られていますので、1900年2月の日数計算にだけは、誤った「29」という数値になってしまいますので、1900年2月の日数計算も正しく行う必要がある場合は、別途回避処理を追加してください。
Home » Excel(エクセル)の関数・数式の使い方 » 日付の処理・計算 » 指定した月の日数を計算−DAY関数・DATE関数