Excel VBAの「DatePart 関数」について解説します。
DatePart 関数とは
Excel VBA の DatePart 関数は、指定した日付を評価し、その日付が含まれる指定した時間間隔の値を返します。
たとえば、指定した日付の曜日または現在の時間を計算したり、日付が年の何週目なのか、何四半期なのかなどを取得することができます。
DatePart 関数の構文や引数の設定や実際の使い方について解説していきたいと思います。
DatePart 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
DatePart(interval, date[, firstdayofweek[, firstweekofyear]])
引数
引数 | 説明 |
---|---|
interval | 【必須】間隔単位の設定値(文字列)を指定します ※ 指定できる間隔設定値は下表を参照ください |
date | 【必須】評価する日付を指定します ※ データ型は Variant (Date) です |
firstdayofweek | 【省略可能】週の開始曜日を定数(値)で指定します ※ 省略時の規定は、日曜日です |
firstweekofyear | 【省略可能】年度の第1週を定数(値)で指定します ※ 省略時の規定は、1月1日を含む週です |
引数 interval に指定できる間隔設定値
interval の設定値で、同じ結果を得られる関数を3列目に記載しています。
設定値(文字列) | 内容 | 代替できる関数 |
---|---|---|
yyyy | 年 | Year関数 |
q | 四半期 | |
m | 月 | Month関数 |
d | 日 | Day関数 |
y | 年間の通算日 | |
ww | 年間の通算週 | |
w | 週の通算日 | |
h | 時 | Hour関数 |
n | 分 | Minute関数 |
s | 秒 | Second関数 |
引数 firstdayofweek に指定できる設定値
定数 | 値 | 内容 |
---|---|---|
vbUseSystem | 0 | 各国語サポート(NLS)API設定を使用 |
vbSunday | 1 | 日曜(既定値) |
vbMonday | 2 | 月曜 |
vbTuesday | 3 | 火曜 |
vbWednesday | 4 | 水曜 |
vbThursday | 5 | 木曜 |
vbFriday | 6 | 金曜 |
vbSaturday | 7 | 土曜 |
引数 firstweekofyear に設定できる設定値
定数 | 値 | 年度の第1週とする内容 |
---|---|---|
vbUseSystem | 0 | 各国語サポート(NLS)API設定を使用 |
vbFirstJan1 | 1 | 1月1日を含む週(既定値) |
vbFirstFourDays | 2 | 7日のう4日~6日が新年度に含まれる週 |
vbFirstFullWeek | 3 | 週全体が新年度に含まれる最初の週 |
戻り値
戻り値 | 説明 |
---|---|
間隔を示す数値 | 戻り値の数値型は Long です |
解説(使用例)
それでは、引数 Date にコード実行時の Date値 を Now 関数で取得し、各 interval の指定で取得できる値を見てみましょう。
DatePart 関数の動作を確認するサンプルコード
'■DatePart関数の動作確認サンプル
Sub DatePart_Sample01()
Dim dt As Date
'コード実行時点のDate値を取得
dt = Now
'▼Nowの値を表示する
Debug.Print "[Now]" & dt
'▼各intervalのDatePart値
Debug.Print DatePart("yyyy", dt) & "年"
Debug.Print DatePart("q", dt) & "四半期"
Debug.Print DatePart("m", dt) & "月"
Debug.Print DatePart("d", dt) & "日"
Debug.Print DatePart("y", dt) & "日(年間通算)"
Debug.Print DatePart("ww", dt) & "週(年間通算)"
Debug.Print DatePart("w", dt) & "日(週の通日)"
Debug.Print DatePart("h", dt) & "時"
Debug.Print DatePart("n", dt) & "分"
Debug.Print DatePart("s", dt) & "秒"
End Sub
実行結果の イミディエイト 画像がこちらです。
・5行目、変数 dt に Now 関数で現在日時を取得して値を代入しています。
・7行目、変数 dt の値をイミディエイトに表示させています。
▼各 Interval 毎に取得できる DatePart 値を取得して結果を表示させます。
・9~18行目で、それぞれの Interval で取得できた値をイミディエイトに表示させています。
※ コードの実行結果は、この上に表示しているイミディエイトの画像でご確認ください。
日付が年の何週目なのかを表示するサンプル
では、コード実行時の日付が、年の何週目なのか、週の何日目なのかを取得し表示してみましょう。
'■今日が年の何週目で週の何日目かを表示する
Sub DatePart_Sample02()
Dim dt As Date
Dim nw As Long, mw As Long
'コード実行時点のDate値を取得
dt = Date
nw = DatePart("ww", dt) '年の何週目か取得
mw = DatePart("w", dt) '週の何日目か取得
MsgBox "今日" & dt & "は、" & vbCrLf & _
"年の第" & nw & "週目、" & vbCrLf & _
"週の" & mw & "日目です"
End Sub
表示された MsgBox の画像がこちらです。
・6行目、変数 dt に Date 関数で実行現在の日付を取得して値を代入しています。
・7行目、変数 nw に interval に “ww” 指定で日付が年の何週目なのかを取得して代入しています。
・8行目、変数 mw に interval に “w” 指定で日付が週の何日目なのかを取得して代入しています。
・9行目で、上の画像のとおり MsgBox に結果を表示させています。
Date など日付・時刻関数の使用例について
Date 関数のほか「日付・時刻」の関数について解説している過去記事があります。下記のリンクからジャンプしてご覧いただければ幸いです。
おわりに
VBAの関数一覧はこちらを参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA DatePart 関数は、指定した日付を評価して、その日付が含まれる指定した時間間隔の値を返します。
Interval の指定が、”q” , “y” , “ww” , “w” については、引数 Date の時間間隔(年や週の位置)を取得して返します。
一方、Interval の指定が、”yyyy” や “m” など、他の関数で代替できるものは、単純に Date の指定部分を表示するだけです。なので、DatePart 関数で取得するケースはあまり無いかもしれませんね。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;