指定日が第何日目、第何週目か調べるDatePart関数について解説します。
年内で第何日目か、月内/年内で第何週目かなどを調べることができます。
基本構文
DatePart(カウント内容, 日付, [firstdayofweek], [firstweekofyear])
引数一覧
主に第1,第2引数で動かす関数で、
カウントのやり方を決める第1引数Intervalの種類は以下の通りです。
| 設定 | 説明 |
|---|---|
| q | 年内で第何四半期にあたるか |
| y | 年内で第何日目か |
| w | 月内で第何週か |
| ww | 年内で第何週か |
| yyyy | Year関数と同じ |
| m | Month関数と同じ |
| d | day関数と同じ |
| h | Hour関数と同じ |
| n | Minute関数と同じ |
| s | Second関数と同じ |
後者の6つはそれぞれ記載の関数と同じ動きになるため、
まったく使用する必要はありません。
主に最初の4つを使用する関数です。
続いて第3引数firstdayofweekは「週の始まりを何曜日とするか」、
第4引数firstweekofyearは「どこを年内の第1週とするか」を指定でき、
以下の設定を行うことが可能です。
| 定数 | 値 | 内容 |
|---|---|---|
| vbUseSystem | 0 | NLS APIに準ずる |
| vbSunday | 1 | 日曜(規定値) |
| vbMonday | 2 | 月曜 |
| vbTuesday | 3 | 火曜 |
| vbWednesday | 4 | 水曜 |
| vbThursday | 5 | 木曜 |
| vbFriday | 6 | 金曜 |
| vbSaturday | 7 | 土曜 |
| 定数 | 値 | 内容 |
|---|---|---|
| vbUseSystem | 0 | NLS APIに準ずる |
| vbFirstJan1 | 1 | 1/1を含む週を第1週とする(規定値) |
| vbFirstFourDays | 2 | 初めて4日以上を含む週を第1週とする ※1/1が金なら1/3日~1/9土が第1週 |
| vbFirstFullWeek | 3 | 初めて7日すべてを含む週を第1週とする ※最初の日曜日がある週 |
※ 第4引数が何曜始まり判定かは第3引数の設定による
サンプルコード
DatePart("q","2025/12/1") ' 4(第4クォーター) DatePart("y","2025/12/1") ' 335 (年内335日目) DatePart("w","2025/12/1") ' 1 (12月の第1週目) DatePart("ww","2025/12/1") ' 49 (年内49週目) DatePart("ww","2025/12/1",vbMonday,vbFirstFullWeek) ' 48(年内最初の月曜1/6~を第1週としたときの年内48週目)
目的はピンポイントながら便利な関数ですが、
使う場合は意図する値になっているかテストしながら使いましょう。