【VBA】年通算日・週番号を調べる(DatePart 関数)

Excel・VBA

指定した日付が第何週目であるかを調べる場合、VBAではDatePart関数が利用できます。

DatePart関数は、指定した日付を指定した時間間隔(日、週など)で表すことができる関数です。

DatePart関数の概要

書式は以下の通りです。

《書式》
DatePart(interval, date, [ firstdayofweek, [ firstweekofyear ]])
※[]内は省略可能

intervalには時間間隔の基準を指定します。

dateには任意の日時を指定します。

firstdayofweekは週の始まりの基準となる曜日を指定します。

firstweekofyearは第一週となる基準を指定します。

intervalの設定

評価する時間間隔の基準を指定します。省略はできません。

値を指定する際は“”で値を囲みます

  値              説明
yyyy年(何年かを返す)
q四半期(第何四半期かを返す)
m月(何月かを返す)
y年通算日を返す
d日(何日かを返す)
w平日(週の中で何番目かを返す。基準はfirstdayofweekで指定)
ww週番号を返す。第一週目の基準はfirstweekofyearで指定します。
h時(何時かを返す)
n分(何分かを返す)
s秒(何秒かを返す)

firstdayofweekの設定

週の始まりとなる曜日を指定します。

  定数    説明
vbUseSystem0NLS APIの設定を使用
vbSunday1日曜日(既定値)
vbMonday2月曜日
vbTuesday3火曜日
vbWednesday4水曜日
vbThursday5木曜日
vbFriday6金曜日
vbSturday7土曜日

firstweekofyearの設定

年の始まりとなる週の基準を指定します。

   定数          説明
vbUseSystem0NLS APIの設定を使用
vbFirstJan111月1日が含まれる週から開始(既定値)
vbFirstFourDays2新年で最初に1週間のうち4日以上含まれる週から開始
vbFirstFullWeek3新年で初めて1週間が完全に含まれる週から開始

DatePart関数を利用する

DatePart関数の使い方とサンプルコードです。

年通算日を調べる

調べたい日付の年通算日を調べる場合、intervalの設定で”y”を指定します。

この場合、firstdayofweek,firstweekofyearの設定は省略しても大丈夫です。

Sub 年通算日()
    '任意の日付の年通算日を表示する
    Dim doy As String
    Dim doyNum As Long
    Dim msg As String
    
    doy = "2021/1/21" '任意の日付を指定
    doyNum = DatePart("y", doy)
    
    msg = doy & "は年通算日で表すと" & doyNum & "です。"
    MsgBox (msg)
End Sub

週番号を調べる

調べたい日付を含む週の週番号を調べる場合、intervalの設定で”ww”を指定します。

また、週の基準を既定値から変更する場合はfirstdayofweekとfirstweekofyearも指定します。

Sub 週番号()
  '調べたい日付を含む週の週番号を表示する。
    Dim doy As String
    Dim doyNum As Long
    Dim doyNum2 As Long
    Dim msgBase As String
    Dim msg As String
    Dim msg2 As String
    
    doy = "2021/3/21" '任意の日付を指定
    doyNum = DatePart("ww", doy, 1, 1) '1月1日を含む週を第一週
    doyNum2 = DatePart("ww", doy, 1, 3) '年で初めて1週間が完全に含まれる週を第一週
    
    msgBase = doy & "の週番号は"
    msg = "1月1日の週を基準とすると、" & doyNum & "です。"
    msg2 = "始めて1週間が完全に含まれる週を第一週とすると、" & doyNum2 & "です。"
    
    MsgBox (msgBase & vbCrLf & msg & vbCrLf & msg2)
End Sub

コメント

タイトルとURLをコピーしました