|
|||||||||||||||
|
Disse websidene oppdateres ikke lengre og er kun tilgjengelig for historikken sin skyld. HelligdagerBeregne datoen for 1. PåskedagDersom du vil beregne den korrekte datoen for 1. Påskedag for et angitt årstall mellom 1900 og 2078 uten å være avhengig av regnearkfunksjonene i Excel kan du benytte denne egendefinerte funksjonen: Function EasterSunday(InputYear As Integer) As Long
' Returnerer datoen for 1. Påskedag, trenger ikke Excel for å virke
Dim d As Integer
d = (((255 - 11 * (InputYear Mod 19)) - 21) Mod 30) + 21
EasterSunday = DateSerial(InputYear, 3, 1) + d + (d > 48) + 6 - _
((InputYear + InputYear \ 4 + d + (d > 48) + 1) Mod 7)
End Function
Ut i fra denne datoen kan du beregne de andre bevegelige helligdagene i forbindelse med påsken og pinsen. Beregne datoen for 1. Påskedag ved hjelp av en regnearkfunksjon Tyskeren Hans W. Herber arrangerte på sin website http://www.herber.de en konkurranse for å finne den korteste regnearkfunksjonen som kunne beregne datoen for første påskedag korrekt fra år 1900 til 2078. Konkurransen avsluttet 31. mars 1999. Eksempelformlene nedenfor forutsetter at celle A1 inneholder årstallet som formelen skal benytte for å returnere datoen for 1. Påskedag. Vinnerformelen (på engelsk) ble som følger: Man kan oversette regnearkfunksjonen til en egendefinert funksjon: Function FDOE(InputYear As Integer) As Long
' Returnerer datoen for 1. Påskedag, trenger Excel for å virke
' Etter en regnearkfunksjon av Norbert Hetterich
FDOE = DateSerial(InputYear, 5, Day(Minute(InputYear / 38) / 2 + 56))
FDOE = Application.WorksheetFunction.Floor(FDOE, 7) - 34
End Function
NB! Den egendefinerte funksjonen ovenfor beregner feil dato for årene 1943, 1957, 1984, 2011, 2038 og 2052. Dersom denne formelen oversettes til norsk, blir formelen slik: Andreplassen i påskeformelkonkurransen ble denne formelen (på engelsk): Oversetter man denne formelen til norsk blir den som følger: Regne med helligdagerFunksjonen nedenfor vil returnere True hvis lngDate er en definert helligdag. Funksjonen kan inkludere eller ekskludere lørdager og søndager. Funksjonen må tilpasses for bruk i andre land enn Norge. Funksjonen er avhengig av funksjonen EasterSunday som du finner tidligere i dette dokumentet. Function NorskHelligdag(lngDate As Long, InclSaturdays As Boolean, _
InclSundays As Boolean) As Boolean
' returnerer True dersom lngDate er en norsk helligdag (evt. inkludert lørdag/søndag)
' benytter funksjonen EasterSunday
Dim InputYear As Integer, ES As Long, OK As Boolean
If lngDate <= 0 Then lngDate = Date
InputYear = Year(lngDate)
ES = EasterSunday(InputYear)
OK = True
Select Case lngDate
Case DateSerial(InputYear, 1, 1) ' 1. Nyttårsdag
'Case ES - 4 ' Onsdag før påske
Case ES - 3 ' Skjærtorsdag
Case ES - 2 ' Langfredag
Case ES ' 1. Påskedag
Case ES + 1 ' 2. Påskedag
Case DateSerial(InputYear, 5, 1) ' 1. mai
Case DateSerial(InputYear, 5, 17) ' 17. mai
Case ES + 39 ' Kristi Himmelfartsdag
'Case ES + 48 ' Pinseaften
Case ES + 49 ' 1. Pinsedag
Case ES + 50 ' 2. Pinsedag
'Case DateSerial(InputYear, 12, 24) ' Julaften
Case DateSerial(InputYear, 12, 25) ' 1. Juledag
Case DateSerial(InputYear, 12, 26) ' 2. Juledag
'Case DateSerial(InputYear, 12, 31) ' Nyttårsaften
Case Else
OK = False
If InclSaturdays Then
If WeekDay(lngDate, vbMonday) = 6 Then
OK = True
End If
End If
If InclSundays Then
If WeekDay(lngDate, vbMonday) = 7 Then
OK = True
End If
End If
End Select
NorskHelligdag = OK
End Function
Dokumentet er sist oppdatert 2001-08-21 12:42:26 Utskriftsvennlig versjon
|
![]() |
||||||||||||||
| |||||||||||||||