2/19/2018

Access。○ヶ月後を算出。ExcelはEDATE関数、ではAccessでは?さらに月末は?

Access。○ヶ月後を算出。ExcelはEDATE関数、ではAccessでは?さらに月末は?

<DateAdd関数とDateSerial関数>

この日付の1ヶ月後を求める場合、
Excelだったらば、EDATE関数を使うことで算出することができますよね。

それと同じことをAccessで行うとしたらどうしたらいいのか?ということで、
○ヶ月後を求める方法をご紹介していきます。


【○ヶ月後:DateAdd関数】

次のテーブルがあって、

この日付フィールドの1ヶ月後を求めていきますので、
挿入タブのクエリデザインで早速作っていきましょう。

1ヶ月後: DateAdd("m",1,[日付])

というフィールドを作ります。DateAdd関数を使い、
引数は、「”m”,1」は、1ヶ月という意味です。

数値を2にすれば、2ヶ月後とすることができます。
これだけで、日付の1ヶ月後を算出することができます。

【○週間後】

このDateAdd関数は、ExcelのEDATE関数よりも小回りが利くというか、
便利な点もあります。例えば、日付の2週間後を算出しようとしたら、
EDATE関数では求めることができませんので、
今日から2週間ならば、TODAY()+14のように関数を変えて対応しますが、
AccessはこのDateAdd関数で対応できちゃいます。

“m”を”ww”として、次のように変えてみましょう。

2週間後: DateAdd("ww",2,[日付])

では、データシートビューで確認してみましょう。

御覧のように、1ヶ月後と2週間後が算出できていますね。

ところで、
”m”は月のmonthの”m”ということだろうとは推察されるかと思いますが、
”ww”。なぜ、wが2個なのか?

それは、四半期を算出するときにご紹介した区分けと同じだからなのです。

改めてご紹介すると、”m”のところを次のように変更すれば、
DateAdd関数だけで算出することが可能になります。

yyyy ○年後を算出
m ○月後を算出
ww ○週後を算出
d ○日後を算出

1年後: DateAdd("yyyy",1,[日付])というフィールドを作るとこのようになります。

きちんと、1年後を算出することができましたね。

さて、○ヶ月後は求めることをご紹介しましたので、
今月末を求める方法もご紹介してきましょう。


【月末を算出:DateSerial関数】

月末を算出するには、Excelでは、
EOMONTH関数を使用すれば算出できることはご存じだと思います。

では、Accessではどのようにしたらいいのでしょうか?
そこで、登場するのは、『DateSerial関数』です。

では、次のフィールドを作っていきましょう。
月末: DateSerial(Year([日付]),Month([日付])+1,0)

データシートビューで確認してみましょう。

きちんと、月末が算出できていますね。
DateSerial関数はExcelのEOMONTH関数と考え方が異なる点があります。

DateSerial(Year([日付]),Month([日付])+1,0)
引数のYearは、年だとわかりますよね。

次の、Monthですが、+1(プラス1)していて、
さらに、Dayには、0(ゼロ)

どのようになっているのかというと、2018/1/15の場合、
2018年2月0日という日付を作ります。

当然、0日なんてものは、ないので、その前日。

つまり、前月の末日という意味になるのです。

これで、うるう年であろうが、31日だろうが、
関係なく、月末を算出することが可能になるわけなんですね。

このように、Excel関数同様に、
Access関数にも日付をコントロールする関数はありますが、
Excelと少し違うところがありますので、知っておくといいかもしれませんね。