ACCESS 月末日を求めるDateSerial関数の使い方

「Accessで月末日を求める関数って何?」「ExcelのEOMONTH関数が使えなくて困っている……」

業務システムを開発していると、支払日や請求締日の計算で必ずと言っていいほど月末日の情報が必要になります。
しかし、残念ながらAccessには月末を専用に求める関数は用意されていません。

そこで活用するのがDateSerial(デイトシリアル)関数です。

この記事では、これまで数多くのAccess開発を手掛けてきた筆者が、コピー&ペーストで今すぐ使える「月末算出のk-度」を解説します。
この記事を読めば、もう月末の計算で悩むことはありません。


こんにちは。
Access開発歴25年以上、300社以上のAccess開発に携わってきた、はこにわガジェット (@hakoniwagadget) です。

Accessは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにAccessの関数をご紹介していきます。

目次

結論:Accessで月末を出すならDateSerial関数を使おう

日付を計算する際に、月末日の計算は難しいものです。
というのは、月によって30日が月末だったり、31日が月末だったりと、必ずしも同じ日付ではないためです。

こうした障壁をクリアしてACCESSで指定した月の月末日を出す場合には、DateSerial関数を利用すると便利です。
DateSerial関数は、指定した年月日から日付型データを作成する関数です。

DateSerial関数は以下の構文で利用します。

年月日をそれぞれ引数に指定するだけの簡単な関数です。

例えば、

と設定すると2026/4/1と返されます。

しかしこれでは、月末を求めるには30日や31日等の可変する日付を自分で計算しなければいけないのでは?と思うかもしれません。
ご安心ください。

DateSerial関数の最後の日付の引数には0を指定することができ、0を指定した場合は1日の-1、つまり前月の月末日を返す仕様になっているのです。

つまり、

と設定すると戻り値が2026/3/31になるのです。

この関数の仕様を作った人はめちゃくちゃ頭が良いのと、実際にこの関数がどんな使われ方をするか具体的にイメージができていたんだなと思います。

DateSerial関数の便利な点は、存在しない日付(4月31日など)を指定しても自動補正してくれるため、日付計算におけるエラーがでなくなることです。

【実務例】クエリでの具体的な活用シーン(月末の締め日計算)

では、実際にクエリで月末日を表示してみましょう。
今回は元データとして以下の売上データテーブルを準備しました。

この「売上日」に対してそれぞれの月末日を締め日として計算してみましょう。
デザインビューでクエリを作成します。

クエリデザイン

クエリの上段(フィールドリスト)に売上データテーブルを追加し、下段のデザイングリッドに売上日をドラッグアンドドロップします。

売上日の右側に、演算フィールドとして「締め日」を作成してみましょう。
これまで説明したようにDateSerial関数を使うのですが、少し難しいのは年、月を変数で指定する必要がある点です。

そこで、Year関数を使って売上日フィールドの年を、Month関数を使って売上日フィールドの月を求めます。

では、データシートビューで結果を見てみましょう。

締め日フィールドが追加されて、月末の日が計算されています。
しかし、よく見ると売上日の前の月の月末日が表示されてしまっています。

これは、DateSerial関数の3つ目の引数に0を指定する方法だと、指定した年月の前月末日を表示するためです。
そのため、DateSerial関数の1つ目、2つ目の引数には売上日の翌月を指定する必要があります。

ここで注意しなければいけないのは、第二引数の月に+1をするだけでは正しく計算ができないという点です。
なぜなら、月が12月だった場合に+1すると月は1月にできますが、年が+1されないからです。

そのため、年、月共にDateAdd関数で1ヵ月追加します。
修整した計算式が以下です。

Year関数、Month関数の引数に直接「売上日」を指定するのではなく、DateAdd関数で1ヵ月足した値を指定しています。
こうすることで売上日の翌月を指定した上で、その前月末日を求めることができるのです。

データシートビューで改めて結果を見てみましょう。

このように、正しく月末日が計算されるようになりました。
2月の場合にうるう年でも正しく結果が表示されていますね。

今回ご説明したように、実務で月末日を計算する場合はもともとテーブルやフォームにある値を元に、変数で指定して計算する必要がありますので注意してください。

VBAを使った月末日の計算方法

ここまではDateSerial関数を使った月末日の計算方法をご紹介してきましたが、月末日をより柔軟に計算したい場合はVBAのプロシージャで計算することも可能です。

以下の記事でVBAを使って前月末日、翌月末日を求めるプロシージャの作成方法を紹介しています。
Functionプロシージャですので、どんなAccessファイルにも組み込んで汎用的に利用可能です。

VBAで前月末日の日付を求める方法
VBAで翌月末日の日付を求める方法

まとめ:月末日を求めるDateSerial関数の使い方

それではまとめです。

DateSerial関数を使って月末日を求めるには、以下のように設定します。

  • 引数の年、月は求めたい月の翌月にする
  • 引数の日は0を指定する

以上、月末日を求めるDateSerial関数の使い方をご紹介しました。


Accessを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でAccessを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、Access開発歴25年以上、過去に300以上のAccessデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。

Accessの新規開発、既存のAccessの修正、Accessの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

フッターバナー

最後までお読みいただき、ありがとうございました。

月末日を求めるDateSerial関数の使い方

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次