「エクセル2010 本日から月末までの残数カウント」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Excel 2010で、今日(本日)から、月末までの日数(残数)を、計算(カウント)する方法を探している方による検索です。
「=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 0) - TODAY()」
Excelで何らかの日数計算をしたいということは、実務でよくあります。
その要望に対して、広く応用できるのが上記の
「=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 0) - TODAY()」
という数式です。
Excelで日付や時間は、1日経過するごとに1加算される数値・シリアル値ですから、日数をカウントするには基本的に引き算を行えばOKです。
月末の日付から今日の日付を引き算すれば、今日から月末までの日数をカウントできます。
「=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 0) - TODAY()」という数式の後半
「- TODAY()」
が今日の日付を引き算しているところです。
ポイントは月末の日付を求める方法です。
この数式の前半
「DATE(YEAR(TODAY()), MONTH(TODAY())+1, 0)」
が、今月の末日を計算している部分です。
DATE関数は、引数を3つ指定する関数です。
DATE関数の
第1引数に年を表す数値
第2引数に月を表す数値
第3引数に日を表す数値
をそれぞれ指定すると、その日付を表すシリアル値が返されます。
上記数式の「DATE(YEAR(TODAY()), MONTH(TODAY())+1, 0)」では、DATE関数の
第1引数に「YEAR(TODAY())」
第2引数に「MONTH(TODAY()+1)」
第3引数に「0」(ゼロ)
がそれぞれ指定されています。
第1引数の「YEAR(TODAY())」は、YEAR関数を使って今日の年を表す数値、第2引数の「MONTH(TODAY())+1」は、MONTH関数を使って今日の月を表す数値を取得してから「+1」しているので翌月を表す数値を、それぞれ指定していることになります。
ここで、もし、
「DATE(YEAR(TODAY()), MONTH(TODAY())+1, 1)」
という数式を指定したのならば、翌月の1日を取得できます。
Excelの日付は、1日経過するごとに1加算される数値ですから
「DATE(YEAR(TODAY()), MONTH(TODAY())+1, 0)」
という数式は、翌月1日の1日前、すなわち、今月の末日が取得できることになります。
よって、この月末の日付から今日の日付を引き算する
「=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 0) - TODAY()」
という数式で、今日から月末までの日数を取得できるわけです。
年・月・日をバラバラにして、足し算や引き算をして、DATE関数で日付に戻すのは、Excelで日付計算を行う場合の基本です。
Excelで日付計算を行うことがよくあるという方は、是非、上記の数式の意味をご理解ください。
上記の
「=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 0) - TODAY()」
という数式はExcelを使いこなしたいという方には、理解していただきたいのですが、式が長いため可読性が悪いというのも事実です。
「=EOMONTH(TODAY(),0) - TODAY()」
以上のような数式でも月末までの日数を計算できます。
月末の日付から今日の日付を引き算しているのは同じですが、月末の日付を返すEOMONTH関数を使うことで、かなりシンプルな数式になっています。
EOMONTH関数は、第1引数に日付を指定し、第2引数にいつの月末を取得するのかを指定します。
「EOMONTH(TODAY(), 1)」
なら、翌月の月末
「EOMONTH(TODAY(), -1)」
なら、先月の月末
「EOMONTH(TODAY(), 0)」
で、今月の月末が取得できます。
注意点としては
「=EOMONTH(TODAY(),0) - TODAY()」
という数式を入力した場合
「1900/1/15」
といった日付データが表示されてしまう可能性が高いということです。
上記の「=EOMONTH(TODAY(),0) - TODAY()」という数式を入力して、「1900/1/15」のようなデータが表示された場合、[Ctrl]+[Shift]+[~](チルダ)キーを押すなどして、日付書式を解除してください。
Home » Excel(エクセル)の関数・数式の使い方 » 日付の処理・計算 » 今日から月末までの日数をカウントする-DATE関数・TODAY関数・EOMONTH関数