指定した月の最初の日曜日(またはその他の曜日)の日付を求めます。なお、「最後」の方を求める方法についてはこちらをご覧ください。
月をどう指定するかを決める必要がありますが、ここでは右のようなテーブルを用いて、それぞれの日付が属する月の最初の日曜日(またはその他の曜日)を求めるものとします。
最初の日曜日を求める場合
まず月の最初の日曜日を求めるケースです。
クエリで次のような列を設けます。
(画像にある「月最初日曜日の曜日」列は確認のためであり、必要はありません)
月最初日曜日: DateSerial(Year([日付]),Month([日付]),8-Weekday(DateSerial(Year([日付]),Month([日付]),0)))
何をやっているのかというと、右側(内側)のDateSerial関数により日付の前月末日を求め、その日が日曜だったら当月7日(8-Weekday関数の結果が7となる)、月曜だったら当月6日、…、土曜だったら当月1日という日付を求めています。
データシートビューです。
求められた日付はいずれも日曜日であり、1日から7日までの間にありますので、求める結果が得られていることが分かります。
その他の曜日を求める場合
例として月の最初の金曜日を求めます。
クエリで次のような列を設けます。
(画像にある「月最初金曜日の曜日」列は確認のためであり、必要はありません)
月最初金曜日: DateSerial(Year([日付]),Month([日付]),8-Weekday(DateSerial(Year([日付]),Month([日付]),0),6))
日曜日を求める例と何が違うかというと、Weekday関数の第2引数として「6」を指定しています。
全体としては、まず右側(内側)のDateSerial関数で日付の前月末日を求め、その日が金曜だったら当月7日(8-Weekday関数の結果が7となる)、日曜だったら当月6日、…、木曜だったら当月1日という日付を求めています。
月の最初の何曜日を求めるかは、このWeekday関数の第2引数を変えることで決められます。日曜日を求めるなら1とするか省略し(省略すれば最初の例と同じになります)、月曜日を求めるなら2とし、…、土曜日を求めるなら7を指定すればOKです。
データシートビューです。
求められた日付はいずれも金曜日であり、1日から7日までの間にありますので、求める結果が得られていることが分かります。