概要

ある日付がその年の通算第何週かは、Format 関数を使って次のように求めることができます。

Format([日付],"ww")

しかし、ある日付が当月の第何週かを求める書式は、Format 関数には用意されていません。

以下で、それを求める方法を紹介します。

※ 式は VBA 中だけではなく、クエリー上や、フォームやレポートの中でも使用できます。

※ ここで言う日付とは日付/時刻型の値を指します。人間が日付のように読めるというだけの文字列式や数値、その他 MS-Access (VBA) が日付式と認識できないいかなる独自フォーマットの値も、対象としません。

週数を取得する方法

これは、単純に 1 日から 7 日までを第一週とし、以降 7 日単位で週をカウントするものです。この場合は最高でも第五週までとなります。

式は以下の通りです。

(Day([日付])+6)\7

サンプル(2005 年 10 月)
(Day([日付])+6)\7
9/259/269/279/289/299/3010/14444551
10/210/310/410/510/610/710/81111112
10/910/1010/1110/1210/1310/1410/152222223
10/1610/1710/1810/1910/2010/2110/223333334
10/2310/2410/2510/2610/2710/2810/294444445
10/3010/3111/111/211/311/411/55511111

暦上の週数を取得する方法

暦上の週数とは、ある特定の曜日で区切られたブロックの数を数えるもので、通常は日曜日を区切り曜日とします。この場合は最高で第六週まで存在します。

式は以下の通りです。

(Day([日付])-Weekday([日付])+13)\7

あるいは下記でも同様です。

Format([日付],"ww")-Format([日付]-Day([日付])+1,"ww")+1

サンプル(2005 年 10 月)
(Day([日付])-Weekday([日付])+13)\7
9/259/269/279/289/299/3010/14444551
10/210/310/410/510/610/710/82222222
10/910/1010/1110/1210/1310/1410/153333333
10/1610/1710/1810/1910/2010/2110/224444444
10/2310/2410/2510/2610/2710/2810/295555555
10/3010/3111/111/211/311/411/56611111

参考情報

日付関連の Microsoft 社サポート技術情報