如果我們要獲取某月中指定日期的數(shù)量,例如,2009年1月中有幾個(gè)星期一?用Excel內(nèi)置的日期時(shí)間函數(shù)無(wú)法解決這個(gè)問(wèn)題。我們可以用自定義函數(shù)的方法來(lái)解決。按Alt+F11打開VBA編輯器,單擊菜單“插入→模塊”,在右側(cè)的代碼窗口中輸入自定義函數(shù):
Function WeekDaysInMonth(iYear As Integer, iMonth As Integer, iDay As Integer)
Dim i, iDaysInMonth As Integer
Dim LastDateInMonth As Date
If iMonth < 1 Or iMonth > 12 Or iDay < 1 Or iDay > 7 Then
WeekDaysInMonth = "錯(cuò)誤"
Exit Function
End If
iDaysInMonth = day(DateAdd("d", -1, DateSerial(iYear, iMonth + 1, 1)))
LastDateInMonth = DateSerial(iYear, iMonth, iDaysInMonth)
For i = iDaysInMonth – 1 To 0 Step -1
If Weekday(LastDateInMonth – i, vbMonday) = iDay Then
WeekDaysInMonth = WeekDaysInMonth + 1
End If
Next i
End Function
這個(gè)自定義函數(shù)有3個(gè)整數(shù)參數(shù),即年、月和代表星期的數(shù)值。最后一個(gè)參數(shù)用1-7的數(shù)值表示星期一至星期日。
使用方法是在單元格中輸入
=weekdaysinmonth(年,月,星期數(shù)值)
例如要獲取2009年12月中星期日的數(shù)量,在單元格中輸入公式:
=weekdaysinmonth(2009,12,7)
公式結(jié)果返回4,表示2009年12月中有4個(gè)星期日。另外,輸入的參數(shù)如果超出范圍,如輸入“=weekdaysinmonth(2009,12,10)”,最后一個(gè)參數(shù)超出范圍,公式返回“錯(cuò)誤”。