Thema Datum  Von Nutzer Rating
Antwort
Rot Ostersonntag korrekt berechnen
17.11.2023 22:00:09 xlKing
Solved
17.11.2023 23:11:18 xlKing
NotSolved
18.11.2023 00:37:55 xlKing
NotSolved
20.11.2023 11:12:30 Der Steuerfuzzi
NotSolved
20.11.2023 17:29:44 xlKing
NotSolved
18.11.2023 01:40:22 Gast01287
NotSolved
18.11.2023 04:09:40 Gast77653
NotSolved
18.11.2023 17:41:38 xlKing
NotSolved
18.11.2023 18:58:03 Gast69709
NotSolved
19.11.2023 03:00:06 xlKing
NotSolved
19.11.2023 12:30:20 Gast158
NotSolved
19.11.2023 19:47:24 Gast95273
NotSolved
19.11.2023 22:50:38 xlKing
NotSolved
19.11.2023 23:04:15 xlKing
NotSolved
20.11.2023 10:03:13 Gast28942
NotSolved
20.11.2023 10:27:21 Gast9314
NotSolved
21.11.2023 00:11:33 Gast75580
NotSolved
22.11.2023 12:22:01 Gast45652
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
17.11.2023 22:00:09
Views:
576
Rating: Antwort:
 Nein
Thema:
Ostersonntag korrekt berechnen

Hallo Ihr da,

Ich habe mal aus verschiedenen (namhaften) Internetquellen verschiedene VBA-Funktionen für die Berechnung vom Ostersonntag in ein Modul gepackt und per benutzerdefinierter Formel in einer Liste von Jahren (Excelsheet) miteinander verglichen. Manche rechnen angeblich nach Gauß, andere nach Hetterich. Mein Problem, je höher die Jahre werden, desto mehr weichen sie alle von der Vergleichsberechnung nach Gauß sowie auch untereinander ab. Manche ergeben gar einen Samstag oder Dienstag. Am ehesten passt noch Ostersonntag1 von Peter Osterrodt. Aber selbst die weicht im Jahr 2079 und ab dem Jahr 2204 manchmal um 1 Woche, um die Jahre 5400 und 5510 sogar um 2 Wochen nach vorne oder hinten vom Vergleich ab. Wer hat denn nun recht? 

Mein Ziel, möglichst für den gesamten Range von 100 bis 9999 das korrekte Osterdatum berechnen. Oder wenigstens ab 1900 bis möglichst weit.

Kann ich das Vergleichsdatum als gegeben nehmen oder kann das vielleicht auch falsch sein?

Function Ostersonntag1(dasjahr As Long) As Date

'von https://www.online-excel.de/excel/singsel_vba.php?f=21
Ostersonntag1 = CDate(WorksheetFunction.Round((CDate(Day(Minute(dasjahr / 38) / 2 + 55) _
 + (IIf(Minute(dasjahr / 38) / 2 + 55 < 60, 1, 0)) & ".4." & dasjahr) / 7), 0) * 7 - 6)

End Function

Public Function Ostersonntag2(Optional ByVal nYear As Long = 0) As Date
  Dim d As Long
  Dim Delta As Long
  
  'von: https://www.vbarchiv.net/tipps/tipp_2249-osterdatum-nach-gauss-berechnen-kompakte-form.html
  d = (((255 - 11 * (nYear Mod 19)) - 21) Mod 30) + 21
  Delta = d + IIf(d > 48, 1, 0) + 6 - ((nYear + Int(nYear / 4) + d + IIf(d > 48, 1, 0) + 1) Mod 7)
 
  Ostersonntag2 = DateAdd("d", Delta, DateSerial(nYear, 3, 1))
End Function

Function Ostersonntag3(jahr As Integer) As Date
'Ostersonntag nach Gauß'scher Osterformel berechnen
'von https://www.herber.de/forum/archiv/1772to1776/1772604_VBA_Termine_mit_Feiertagsverschiebung.html
Dim x As Integer
x = (((255 - 11 * (jahr Mod 19)) - 21) Mod 30) + 21
Ostersonntag3 = DateSerial(jahr, 3, 1) + x + (x > 48) + 6 - ((jahr + jahr \ 4 + x + (x > 48) + 1) Mod 7)
End Function

 

Vergleichsformel per Excel = 2. Lösung nach Gauß von https://www.herber.de/excelformeln/pages/Ermittlung_des_Ostersonntags_und_aller_beweglichen_Feiertage.html

Gruß Mr. K.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Ostersonntag korrekt berechnen
17.11.2023 22:00:09 xlKing
Solved
17.11.2023 23:11:18 xlKing
NotSolved
18.11.2023 00:37:55 xlKing
NotSolved
20.11.2023 11:12:30 Der Steuerfuzzi
NotSolved
20.11.2023 17:29:44 xlKing
NotSolved
18.11.2023 01:40:22 Gast01287
NotSolved
18.11.2023 04:09:40 Gast77653
NotSolved
18.11.2023 17:41:38 xlKing
NotSolved
18.11.2023 18:58:03 Gast69709
NotSolved
19.11.2023 03:00:06 xlKing
NotSolved
19.11.2023 12:30:20 Gast158
NotSolved
19.11.2023 19:47:24 Gast95273
NotSolved
19.11.2023 22:50:38 xlKing
NotSolved
19.11.2023 23:04:15 xlKing
NotSolved
20.11.2023 10:03:13 Gast28942
NotSolved
20.11.2023 10:27:21 Gast9314
NotSolved
21.11.2023 00:11:33 Gast75580
NotSolved
22.11.2023 12:22:01 Gast45652
NotSolved