|
|||||||||||||||
Disse websidene oppdateres ikke lengre og er kun tilgjengelig for historikken sin skyld.Klikk her for å gå til den oppdaterte informasjonen. 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
|
|||||||||||||||
|