|
|
|
| Например: во втором квартале апрель - 1, май - 2, июнь - 3
Мой вариант
Function MonthOfQuarter(Optional dteDate As Date) As Byte
MonthOfQuarter = IIf(Month(dteDate) Mod 3 = 0, 3, Month(dteDate) Mod 3)
End Function
Может кто-нибудь предложит более наглядный вариант? | |
|
| |
|
|
|
|
Public Function funMonthOfQuarter(dteDate As Date) As Long
Select Case Month(dteDate)
Case 1, 4, 7, 10
funMonthOfQuarter = 1
Case 2, 5, 8, 11
funMonthOfQuarter = 2
Case 3, 6, 9, 12
funMonthOfQuarter = 3
End Select
End Function
|
Более наглядно, и работает в полтора раза быстрее. | |
|
| |
|
|
|
| Согласен с Lukas, что более наглядно. Можно ведь и так: i - ((i - 1) \ 3) * 3, где i - номер месяца. Только кто через неделю скажет, что это за выражение такое :-) | |
|
| |
|
|
|
|
Public Function funMonthOfQuarter(dteDate As Date) As Long
Dim i As Long
i = Month(dteDate)
funMonthOfQuarter = i - ((i - 1) \ 3) * 3
End Function
|
В таком варианте работает на 10 % быстрее, чем вариант с Select Case. | |
|
| |
|
|
|
| Здорово. Подобным способом изначально и пытался что нибудь подобрать.
Вот это да - "/" отличается от "\" | |
|
| |