【VBA】Weekday関数で人事・勤怠管理を効率化:曜日ごとの勤務時間集計

【VBA】Weekday関数で人事・勤怠管理を効率化:曜日ごとの勤務時間集計

人事・勤怠管理において、曜日ごとの勤務時間を集計することは、シフト作成や労働時間分析において非常に重要です。しかし、手作業で集計するには時間と手間がかかり、ミスも発生しやすくなります。VBAのWeekday関数を使用することで、この作業を自動化し、効率化することができます。

Weekday関数の基本

Weekday関数は、日付に対応する曜日を数値で返す関数です。例えば、日曜日なら1、月曜日なら2といった具合です。

Weekday(Date, [FirstDayOfWeek])

  • Date:日付を表す日付/時間型 (Date) の値、数式、または文字列式を指定します。
  • FirstDayOfWeek:省略可能な引数で、週の最初の曜日を指定します。VbSunday (1) が既定値です。

FirstDayOfWeek引数には、以下の定数を使用できます。

  • vbUseSystemDayOfWeek (0): NLS API 設定を使用
  • vbSunday (1): 日曜日 (既定値)
  • vbMonday (2): 月曜日
  • vbTuesday (3): 火曜日
  • vbWednesday (4): 水曜日
  • vbThursday (5): 木曜日
  • vbFriday (6): 金曜日
  • vbSaturday (7): 土曜日

人事・勤怠管理におけるWeekday関数の活用例

例1:勤務時間集計

社員の勤務データから、曜日ごとの勤務時間を集計する例です。

Sub 集計()
Dim i As Long, lastRow As Long
Dim ws As Worksheet
Dim dayOfWeek As Integer
Dim totalHours(1 To 7) As Double ' 1:日, 2:月, ..., 7:土

Set ws = ThisWorkbook.Sheets(