Access

【VBA】指定日付が含まれる週の月曜日~土曜日を取得

週の始めと終わり

今回は指定日付の週の月曜日を求めます。

現在日までの今週の売上などを集計したい場合に使えます。

使用する関数

使う関数は、Weekday()です。

Weekday()関数の仕様は以下の通りです。

weekday()の関数仕様

概要:日付に対応する曜日を返します。
引数:指定日、(週の基準)
戻り値:既定では1 (日曜) から 7 (土曜) までの範囲の整数

引き数として指定した「週の基準」による各曜日の戻り値は以下のとおりです。

週の基準
曜日 1または指定なし 2 3
日曜日 1 7 6
月曜日 2 1 0
火曜日 3 2 1
水曜日 4 3 2
木曜日 5 4 3
金曜日 6 5 4
土曜日 7 6 5

※その他の「週の基準」もありますが代表的なもののみ掲載しています。

指定日付が含まれる週の月曜日~土曜日を取得する手順

まずは、指定日の曜日を求めます。週の基準を月曜日(0)スタートにした方がわかりやすいので、今回は週の基準を3にします。

weekday(指定日, 3)

指定日から曜日を引くと月曜日の日付が取得できます。

例)指定日が2018/08/30(木)の場合

[指定日]-weekday([指定日],3)

2018/8/30 – weekday(2018/8/30, 3) = 2018/8/27 となります。

解説:指定日から取得した曜日を引くと月曜日の日付になります。

1週間分の売上を求める場合などは、取得した週始めの日付と取得した週始めの日付に6を加算した日付範囲を条件にデータ集計をすると求められます。

VBAの関数で処理する場合

関数を作りました。

getweekday()の関数仕様

概要:指定日を含む週の月曜日と土曜日を取得します
引数:指定日、月曜日取得変数、土曜日取得変数
戻り値:True/False

クエリーで処理する場合

週の初め取得クエリ

これは、売上日が今週の月曜日から今日までのデータを抽出するための条件指定です。

先の関数と同じように指定日の月曜日から土曜日を指定する場合は以下のようになります。

Between [指定日]-weekday([指定日],3) and [指定日]-weekday([指定日],3)+5

ABOUT ME
アズビーパートナーズ
アズビーパートナーズ
プログラマーと社内SEとしての経験を活かして、 情報システム部門のご相談を承ります。 得意な分野はAccessによる短納期開発、 BIツール(QlikSense/QlikView)の開発です。 現在はCMSを利用したホームページの作成にも力を入れています。