Microsoft Excel

Herbers Excel/VBA-Archiv

Datumsberechnung vor 1900

Betrifft: Datumsberechnung vor 1900 von: Ewald
Geschrieben am: 24.07.2014 13:20:37

Hallo,

eine UDF soll alle Datums- und Zeitdifferenzen eines Zeitraum wiedergeben.Dies ist für Datümer ab 1900 auch kein Problem.

Jetzt soll das aber auch schon ab dem Jahr 0 möglich sein.

Rechnet Excel richtig wenn zu dem Jahr einfach 2000 dazuaddiert wird.

Ist darüber schon etwas bekannt.

Gruß Ewald

  

Betrifft: AW: Datumsberechnung vor 1900 von: Hajo_Zi
Geschrieben am: 24.07.2014 13:26:32

Hallo Ewald,

Excelformeln.de

Gruß Hajo


  

Betrifft: AW: Datumsberechnung vor 1900 von: Wilfried Höttl
Geschrieben am: 24.07.2014 14:50:02

Hallo!

Hilft dir das weiter?

Tabelle1

 ABCDE
19Datum kleinerDatum grösserJahrMonatTag
2015.04.124615.04.1248200
2105.07.186629.10.2013147324
2205.07.110019.07.1766666014
2307.07.189909.07.1901202

Formeln der Tabelle
ZelleFormel
C20=WENN(($A20="")+($B20=""); "";DATEDIF(WENN(ISTZAHL($A20); (WENN(LÄNGE($A20)=4;"1.1.";0)&$A20+($A20<1900)*800)*1;WECHSELN($A20;TEIL($A20;SUCHEN("#";WECHSELN($A20;".";"#";2))+1;99); TEIL($A20;SUCHEN("#";WECHSELN($A20;".";"#";2))+1;99)+800)); WENN(ISTZAHL($B20); WENN(ISTZAHL($A20); (WENN(LÄNGE($B20)=4;"1.1.";0)&$B20+($B20<1900)*800)*1;TEXT($B20;"TT.MM.")&JAHR($B20)+800); WECHSELN($B20;TEIL($B20;SUCHEN("#";WECHSELN($B20;".";"#";2))+1;99); TEIL($B20;SUCHEN("#";WECHSELN($B20;".";"#";2))+1;99)+800)); "Y"))
D20=WENN(($A20="")+($B20=""); "";DATEDIF(WENN(ISTZAHL($A20); (WENN(LÄNGE($A20)=4;"1.1.";0)&$A20+($A20<1900)*800)*1;WECHSELN($A20;TEIL($A20;SUCHEN("#";WECHSELN($A20;".";"#";2))+1;99); TEIL($A20;SUCHEN("#";WECHSELN($A20;".";"#";2))+1;99)+800)); WENN(ISTZAHL($B20); WENN(ISTZAHL($A20); (WENN(LÄNGE($B20)=4;"1.1.";0)&$B20+($B20<1900)*800)*1;TEXT($B20;"TT.MM.")&JAHR($B20)+800); WECHSELN($B20;TEIL($B20;SUCHEN("#";WECHSELN($B20;".";"#";2))+1;99); TEIL($B20;SUCHEN("#";WECHSELN($B20;".";"#";2))+1;99)+800)); "YM"))
E20=WENN(($A20="")+($B20=""); "";DATEDIF(WENN(ISTZAHL($A20); (WENN(LÄNGE($A20)=4;"1.1.";0)&$A20+($A20<1900)*800)*1;WECHSELN($A20;TEIL($A20;SUCHEN("#";WECHSELN($A20;".";"#";2))+1;99); TEIL($A20;SUCHEN("#";WECHSELN($A20;".";"#";2))+1;99)+800)); WENN(ISTZAHL($B20); WENN(ISTZAHL($A20); (WENN(LÄNGE($B20)=4;"1.1.";0)&$B20+($B20<1900)*800)*1;TEXT($B20;"TT.MM.")&JAHR($B20)+800); WECHSELN($B20;TEIL($B20;SUCHEN("#";WECHSELN($B20;".";"#";2))+1;99); TEIL($B20;SUCHEN("#";WECHSELN($B20;".";"#";2))+1;99)+800)); "MD"))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4

Gruß
Wilfried


  

Betrifft: AW: Datumsberechnung vor 1900 von: Ewald
Geschrieben am: 24.07.2014 15:56:01

Hallo,

mir war auch bekannt das es einen Zyklus gibt von 400 Jahren der die gleiche Berechnung ergeben soll, nur wie sieht es mit dem Vielfachen davon aus.

Auf Excelformeln.de konnte ich erkennen das sie 4000 Jahre dazu addieren, Wilfried hat 800 Jahre.

Wenn ich vom Jahr 0000 anfangen will, wäre 2000 Jahre die kleinste Aufsummierung um in den Rechenbereich zu kommen. 4000 erscheint mir ziemlich hoch und mit 800 reicht es nicht.

Nur finde ich nirgendwo ob ein beliebiges Vielfaches von 400 richtig rechnet.

die Funktion die richtig rechnet, habe ich ja schon, es geht jetzt nur darum Datümer die vor 1900 liegen in die richtige Form zu bringen.

Gruß Ewald


  

Betrifft: Mit VBA kommst du bis zum Jahr 100 zurück ... von: Luc:-?
Geschrieben am: 24.07.2014 20:24:38

…und bis zum Jahr 9999, Ewald;
soll's mehr sein, ist wohl 4000 der richtige Summand bzw Subtrahend (hatte ich wahrscheinl auch mal verwendet).
Gruß, Luc :-?

Besser informiert mit …


  

Betrifft: AW: Mit VBA kommst du bis zum Jahr 100 zurück ... von: Ewald
Geschrieben am: 24.07.2014 23:26:37

Hallo Luc,

das paßt aber nur bei reinen Datümern,

willst du altes Datum bis Jetzt() berechnen sind die Tage falsch und die Angaben von Stunden und Minuten reiner Unsinn.

Muß jetzt nur mal sehen wie ich Jetzt()um 2000 Jahre erhöhen kann ohne aufzubröseln.

Gruß Ewald


  

Betrifft: Wenn ich mich recht erinnere, sind mit VBA ... von: Luc:-?
Geschrieben am: 25.07.2014 02:51:58

…die Tage richtig, Ewald,
allerdings ohne Berücksichtigung der Gregoriani­schen Kalender­reform. Foglich passen ältere Original­daten nur zu unserem jetzigen Kalender und lassen nur so keine exakte WoTagsbestimmung zu. Vor der Juliani­schen Kalender­reform und für andere Kalender ist so etwas ohnehin irrelevant bis illusorisch. Solche Daten sollten aber schon umgerechnet vorliegen. Die Bestimmung des Urknall­Datums bleibt aber ohnehin rein akademisch, weil keiner weiß, ob die Zeit immer und überall gleich schnell verlief bzw verläuft und die Bezugssysteme anders waren bzw sich in Zukunft ändern könnten bzw wdn. Ansonsten könnte man so vom Urknall bis zum Ende des Universums rechnen. Allerdings wirken sich bei so langen Zeiträumen auch Schaltsekunden irgendwann aus. Aber wer braucht das schon… ;-)
Allerdings reichen 2000 Jahre für die Interpolation mE wohl eher nicht. Ggf muss diese Erhöhung aber erst am Ende des 1.Zyklus erfolgen. Nur auf JETZT() bezogen reicht evtl nicht. Aber das müsste ich erstmal im Abyss meiner HDs finden.
Luc :-?


  

Betrifft: AW: Mit VBA kommst du bis zum Jahr 100 zurück ... von: Wilfried Höttl
Geschrieben am: 25.07.2014 11:22:35

Hallo!

Wenn du mit Jahr 0000 anfängst dann so.

Tabelle1

 ABCDE
19Datum kleinerDatum grösserJahrMonatTag
2015.04.000015.04.1248124800
2105.07.186629.10.2013147324
2205.07.110019.07.1766666014
2307.07.189909.07.1901202

Formeln der Tabelle
ZelleFormel
C20=WENN(($A20="")+($B20=""); "";DATEDIF(WENN(ISTZAHL($A20); (WENN(LÄNGE($A20)=4;"1.1.";0)&$A20+($A20<1900)*1900)*1;WECHSELN($A20;TEIL($A20;SUCHEN("#";WECHSELN($A20;".";"#";2))+1;99); TEIL($A20;SUCHEN("#";WECHSELN($A20;".";"#";2))+1;99)+1900)); WENN(ISTZAHL($B20); WENN(ISTZAHL($A20); (WENN(LÄNGE($B20)=4;"1.1.";0)&$B20+($B20<1900)*1900)*1;TEXT($B20;"TT.MM.")&JAHR($B20)+1900); WECHSELN($B20;TEIL($B20;SUCHEN("#";WECHSELN($B20;".";"#";2))+1;99); TEIL($B20;SUCHEN("#";WECHSELN($B20;".";"#";2))+1;99)+1900)); "Y"))
D20=WENN(($A20="")+($B20=""); "";DATEDIF(WENN(ISTZAHL($A20); (WENN(LÄNGE($A20)=4;"1.1.";0)&$A20+($A20<1900)*1900)*1;WECHSELN($A20;TEIL($A20;SUCHEN("#";WECHSELN($A20;".";"#";2))+1;99); TEIL($A20;SUCHEN("#";WECHSELN($A20;".";"#";2))+1;99)+1900)); WENN(ISTZAHL($B20); WENN(ISTZAHL($A20); (WENN(LÄNGE($B20)=4;"1.1.";0)&$B20+($B20<1900)*1900)*1;TEXT($B20;"TT.MM.")&JAHR($B20)+1900); WECHSELN($B20;TEIL($B20;SUCHEN("#";WECHSELN($B20;".";"#";2))+1;99); TEIL($B20;SUCHEN("#";WECHSELN($B20;".";"#";2))+1;99)+1900)); "YM"))
E20=WENN(($A20="")+($B20=""); "";DATEDIF(WENN(ISTZAHL($A20); (WENN(LÄNGE($A20)=4;"1.1.";0)&$A20+($A20<1900)*1900)*1;WECHSELN($A20;TEIL($A20;SUCHEN("#";WECHSELN($A20;".";"#";2))+1;99); TEIL($A20;SUCHEN("#";WECHSELN($A20;".";"#";2))+1;99)+1900)); WENN(ISTZAHL($B20); WENN(ISTZAHL($A20); (WENN(LÄNGE($B20)=4;"1.1.";0)&$B20+($B20<1900)*1900)*1;TEXT($B20;"TT.MM.")&JAHR($B20)+1900); WECHSELN($B20;TEIL($B20;SUCHEN("#";WECHSELN($B20;".";"#";2))+1;99); TEIL($B20;SUCHEN("#";WECHSELN($B20;".";"#";2))+1;99)+1900)); "MD"))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4

Gruß
Wilfried