Home » Excel(エクセル)の関数・数式の使い方 » 日付の処理・計算 » 指定した月の日数を計算−DAY関数・DATE関数

指定した月の日数を計算−DAY関数・DATE関数

対象:Excel97, Excel2000, Excel2002, Excel2003, Excel2007

「指定した月の日数を計算するにはどうしたらいいですか?」
「今月が何日あるのかを調べるにはどうしたらいいのでしょうか?」
というご質問をいただくことがあります。

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関数

「日付の処理・計算」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.