| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Alexander Wolff
Anmeldedatum: 01.01.1970 Beiträge: 3570
|
Verfasst am: So Dez 16, 2007 2:05 pm Titel: Altersgrenze berechnen |
|
|
> in einer Übungsaufgabe wird die Altersgrenze wie folgt berechnet:
>
> =(HEUTE()+2)-B2
>
> In B2 steht das Datum in Form von TT.MM.JJJJ
>
> Ich verstehe nicht weshalb "+2" mit in die Formel muss...
>
> Es gibt sicher eine Menge bessere Möglichkeiten die Altersgrenze zu
> berechnen. Mich interssiert aber konkret dieses +2. Warum muss man
> überhaupt etwas hinzuaddieren und warum gerade 2 Tage?
1) Was ist B2 für ein Datum?
2) Wo ist die Altersgrenze? Ich sehe nur eine Datumsgrenze.
3) +2 scheint eher an der Formulierung des Sachverhalts zu liegen.
--
Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2
.
|
|
| Nach oben |
|
 |
Oliver
Anmeldedatum: 01.01.1970 Beiträge: 70
|
Verfasst am: So Dez 16, 2007 2:45 pm Titel: Altersgrenze berechnen |
|
|
> 1) Was ist B2 für ein Datum?
> 2) Wo ist die Altersgrenze? Ich sehe nur eine Datumsgrenze.
> 3) +2 scheint eher an der Formulierung des Sachverhalts zu liegen.
Habe mich ungenau ausgedrückt. In der Aufgabe wird ermittelt ob jemand 18
Jahre alt ist oder noch nicht.
In B2 steht in diesem Fall 22.01.1980 (Die Afgabe ist schon älter)
In C2 stehet dann die Formel =(HEUTE()+2)-B2
In einem weiteren Feld wird dann die Altersgrenze ermittelt mit:
=WENN(JAHR(C2)-1900<18;"Bescheinigung notwendig";"Ok")
Mir ist einfach dieses +2 unklar. Wenn ich von =HEUTE() ein älteres Datum
abziehe müßte das doch genügen...?
Oli
.
|
|
| Nach oben |
|
 |
Alexander Wolff
Anmeldedatum: 01.01.1970 Beiträge: 3570
|
Verfasst am: So Dez 16, 2007 6:51 pm Titel: Altersgrenze berechnen |
|
|
=JAHR("1.1.2018"-"1.1.1900")-1900 ergibt 117
=JAHR("2.1.2018"-"1.1.1900")-1900 ergibt 118
=JAHR("2.1.2018"-"1.1.1901")-1900 ergibt 116
=JAHR("3.1.2018"-"1.1.1901")-1900 ergibt 117
Deine Korrektur von 2 gilt also nur für den zweiten Fall; im ersten reicht 1
aufgrund des Excelfehlers 29.2.1900 (dieses Datum gab es nicht, Excel meint
es aber zu kennen). Da nun kaum jemand älter als 107 ist, reicht Deine
Formel für heutige Belange aus.
Die verbleibende Korrektur von 1 liegt daran, dass Du ein Datum als
Differenz gewinnst und daraus ganze Jahre interpretieren möchtest. Das ist
so eben nur mit +1 möglich (und für mindestens ein Schaltjahr dazwischen
richtig, sonst ist wieder +2 nötig!).
Kurzgefaßt: Für Kleinkinder und Ur-Uropas ist Deine Formel gefährlich. Von
>=4 (immer) und 107 (Momentaufnahme) Jahren aber scheint sie zu klappen -
bestimmt aber mit noch zu entdeckenden Ausnahmen!
Mit =DATEDIF("1.3.1988";"1.3.2006";"Y") klappt es ohne Korrekturfaktor: 18!
Allerdings ist Deine Formel mit Korrekturfaktor in einer Hinsicht im
Vorteil: Sie ist portabel! (Pocket Excel kennt DATEDIF nämlich nicht)
--
Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2
.
|
|
| Nach oben |
|
 |
Oliver
Anmeldedatum: 01.01.1970 Beiträge: 70
|
Verfasst am: So Dez 16, 2007 7:06 pm Titel: Altersgrenze berechnen |
|
|
Hallo Alexander,
extrem gute Antwort!
Das hilft mir weiter!
Danke!
Oli
.
|
|
| Nach oben |
|
 |
Anmeldedatum: 01.01.1970 Beiträge: 312655
|
Verfasst am: Mo Dez 17, 2007 6:49 am Titel: Altersgrenze berechnen |
|
|
Am 16.12.2007 22:03:39 schrieb Klaus "Perry" Pago:
> Die Formellösung erklärt jemanden mit dem Geburtsdatum 2.3.1990 irrtümlich
> schon am 1.3.2008 für volljährig. Diese "Unschärfe" von einem Tag bleibt
> zwei Jahre lang bestehen, bis durch Erreichen eines Schaltjahres beim
> Geburtsdatum diese 1-Tages-Differenz kompensiert wird. Der Effekt tritt dann
> mit dem Erreichen des nächsten Schaltjahres im HEUTE-Datumsjahr 2012 auf
> usw. usw. usw.
> Bin mal gespannt auf entsprechende Formellösungen - die Steilvorlage habe
> ich ja hiermit geliefert :)
Geburtsdatum steht in B2
=WENN(HEUTE()
MfG
Klaus
.
|
|
| Nach oben |
|
 |
Alexander Wolff
Anmeldedatum: 01.01.1970 Beiträge: 3570
|
Verfasst am: Di Dez 18, 2007 5:43 pm Titel: Altersgrenze berechnen |
|
|
>> Geburtsdatum steht in B2
>>
>> =WENN(HEUTE()<DATUM(JAHR(B2)+18;MONAT(B2);TAG(B2));"Bescheinigung_notwendig";"Ok")
>
> kurz und bündig - und "plus 2" ist auch kein Thema mehr.
Leider ist die Aufgabenstellung aber anders gewesen: Wie alt (und nicht etwa
mit einem Tag Toleranz, bezogen auf ein festes Datum) bin ich heute? Man
kann die obige Gleichung nicht zur 18 als Unbekannte hin umformen, da die 18
Funktionsparameter ist. Also bleibt zunächst dafür nur DATEDIF(..;..;"Y").
Siehe allerdings die begonnene Seite www.xxcl.de/0064.htm
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
.
|
|
| Nach oben |
|
 |
Alexander Wolff
Anmeldedatum: 01.01.1970 Beiträge: 3570
|
Verfasst am: Di Dez 18, 2007 9:24 pm Titel: Altersgrenze berechnen |
|
|
> Die vom OP angebotene und auch wegen der "+2" hinterfragten Lösung liefert
> in den von mir dar gelegten Fällen falsche Ergebnisse. Die Lösung von
> Klaus korrigiert diese Unschärfe. Was gefällt dir denn daran nicht? Dein
Ich wollte das Alter bekommen. OP wollte das auch, indem er indirekt nach
dem Sinn von +2 fragte. Bevor man Bedingungen verwendet, muss man erst mal
ihre Einzelteile hinterfragen. Und +2 ergibt zwar immer die zutreffende
Aussage, aber in manchen Fällen ergibt +1 eben auch schon das, was +2
garantieren soll - damit ist die zugrundeliegende Funktion aber an ihren
Sprungstellen falsch.
> Kleinkinder- und Ururopahinweis hat doch einen ganz anderen Fehler
> beleuchtet. Deine anschließend erteilte "Unbedenklichkeitsbescheinigung"
> war allerdings etwas voreilig :)
"... bestimmt aber mit noch zu entdeckenden Ausnahmen" ist doch gerade keine
Unbedenklichkeitsbescheinigung. Betroffen sind z.B. ausserdem alle Datümer
A1,B1, zwischen denen der 29.2.2000 liegt.
OP stellt die 18 auf die eine Seite der Ungleichung.
> Setzt man die beiden ursprünglichen Formeln zusammen, so ergibt sich:
>
> =WENN(JAHR((HEUTE()+2)-B2)-1900<18;"Bescheinigung notwendig";"Ok")
>
> Klaus formt die Ungleichung gar nicht um (was übrigens mathematisch
> zulässig ist), sondern liefert eine eigene Formel:
Es geht nicht um Zulässigkeit. Es ist einfach nicht möglich. Du kannst die
18 in Klaus' Lösung nicht isolieren, da sie ein Argument darstellt.
> =WENN(HEUTE()<DATUM(JAHR(B2)+18;MONAT(B2);TAG(B2));"Bescheinigung_notwendig";"Ok")
>
> Dass einige Elemente der "falschen" Formel verwendet wurden, liegt in der
> Natur der Aufgabenstellung.
Du hast recht: Innerhalb einer Bedingung, wie OP sie formulierte, ist der
Platz der 18 egal. Somit kann Klaus seinen Zusammenhang natürlich anbringen.
Aber Du selbst warst doch gespannt auf entsprechende Formellösungen, die die
"Unschärfen" beseitigen.
> Aber viele Wege führen nach Rom - u.a. auch Datedif.
In Pocket Excel und Open Office nicht. Mein Link von vorhin ist übrigens
noch fehlerhaft - die Korrekturfaktoren müssen anders sein.
--
Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2
.
|
|
| Nach oben |
|
 |
Anmeldedatum: 01.01.1970 Beiträge: 312655
|
Verfasst am: Mi Dez 19, 2007 8:08 am Titel: Altersgrenze berechnen |
|
|
Hallo Alexander
Hallo Klaus
Am 18.12.2007 21:24:20 schrieb Alexander Wolff:
> Ich wollte das Alter bekommen. OP wollte das auch, indem er indirekt nach
> dem Sinn von +2 fragte. Bevor man Bedingungen verwendet, muss man erst mal
> ihre Einzelteile hinterfragen. Und +2 ergibt zwar immer die zutreffende
> Aussage, aber in manchen Fällen ergibt +1 eben auch schon das, was +2
> garantieren soll - damit ist die zugrundeliegende Funktion aber an ihren
> Sprungstellen falsch.
> OP stellt die 18 auf die eine Seite der Ungleichung.
>
>> Setzt man die beiden ursprünglichen Formeln zusammen, so ergibt sich:
>> =WENN(JAHR((HEUTE()+2)-B2)-1900<18;"Bescheinigung notwendig";"Ok")
Wenn ich das richtig sehe, ist +2 falsch und +1 richtig:
=JAHR((HEUTE()+1)-B2)-1900
>> Klaus formt die Ungleichung gar nicht um (was übrigens mathematisch
>> zulässig ist), sondern liefert eine eigene Formel:
> Es geht nicht um Zulässigkeit. Es ist einfach nicht möglich. Du kannst die
> 18 in Klaus' Lösung nicht isolieren, da sie ein Argument darstellt.
>
>> =WENN(HEUTE()<DATUM(JAHR(B2)+18;MONAT(B2);TAG(B2));"Bescheinigung_notwendig";"Ok")
>
> Du hast recht: Innerhalb einer Bedingung, wie OP sie formulierte, ist der
> Platz der 18 egal. Somit kann Klaus seinen Zusammenhang natürlich anbringen.
> Aber Du selbst warst doch gespannt auf entsprechende Formellösungen, die die
> "Unschärfen" beseitigen.
MfG
Klaus
.
|
|
| Nach oben |
|
 |
Anmeldedatum: 01.01.1970 Beiträge: 312655
|
Verfasst am: Mi Dez 19, 2007 9:40 am Titel: Altersgrenze berechnen |
|
|
Hallo Alexander
Hallo Klaus
Am 19.12.2007 08:08:43 schrieb Klaus Blaschke:
> Am 18.12.2007 21:24:20 schrieb Alexander Wolff:
>> Ich wollte das Alter bekommen. OP wollte das auch, indem er indirekt nach
>> dem Sinn von +2 fragte. Bevor man Bedingungen verwendet, muss man erst mal
>> ihre Einzelteile hinterfragen. Und +2 ergibt zwar immer die zutreffende
>> Aussage, aber in manchen Fällen ergibt +1 eben auch schon das, was +2
>> garantieren soll - damit ist die zugrundeliegende Funktion aber an ihren
>> Sprungstellen falsch.
>> OP stellt die 18 auf die eine Seite der Ungleichung.
>>
>>> Setzt man die beiden ursprünglichen Formeln zusammen, so ergibt sich:
>>> =WENN(JAHR((HEUTE()+2)-B2)-1900<18;"Bescheinigung notwendig";"Ok")
>
> Wenn ich das richtig sehe, ist +2 falsch und +1 richtig:
> =JAHR((HEUTE()+1)-B2)-1900
*Vor* 1910 ist ist +2 richtig und *ab* 1910 ist +1 richtig.
=WENN(JAHR(B2)<1910;JAHR((HEUTE()+2)-B2)-1900;JAHR((HEUTE()+1)-B2)-1900)
>>>> =WENN(HEUTE()<DATUM(JAHR(B2)+18;MONAT(B2);TAG(B2));"Bescheinigung_notwendig";"Ok")
>> Du hast recht: Innerhalb einer Bedingung, wie OP sie formulierte, ist der
>> Platz der 18 egal. Somit kann Klaus seinen Zusammenhang natürlich anbringen.
>> Aber Du selbst warst doch gespannt auf entsprechende Formellösungen, die die
>> "Unschärfen" beseitigen.
MfG
Klaus
.
|
|
| Nach oben |
|
 |
Anmeldedatum: 01.01.1970 Beiträge: 312655
|
Verfasst am: Mi Dez 19, 2007 11:30 am Titel: Altersgrenze berechnen |
|
|
Am 19.12.2007 09:40:55 schrieb Klaus Blaschke:
>> Am 18.12.2007 21:24:20 schrieb Alexander Wolff:
>>> Ich wollte das Alter bekommen. OP wollte das auch, indem er indirekt nach
>>> dem Sinn von +2 fragte. Bevor man Bedingungen verwendet, muss man erst mal
>>> ihre Einzelteile hinterfragen. Und +2 ergibt zwar immer die zutreffende
>>> Aussage, aber in manchen Fällen ergibt +1 eben auch schon das, was +2
>>> garantieren soll - damit ist die zugrundeliegende Funktion aber an ihren
>>> Sprungstellen falsch.
>>> OP stellt die 18 auf die eine Seite der Ungleichung.
Ist noch *nicht* richtig:
> =WENN(JAHR(B2)<1910;JAHR((HEUTE()+2)-B2)-1900;JAHR((HEUTE()+1)-B2)-1900)
In einem Schaltjahr ist +2 richtig,
in den anderen Jahren ist +1 richtig.
=WENN(TAG(DATUM(JAHR(B2);3;0))=29;JAHR((HEUTE()+2)-B2)-1900;JAHR((HEUTE()+1)-B2)-1900)
MfG
Klaus
.
|
|
| Nach oben |
|
 |
Alexander Wolff
Anmeldedatum: 01.01.1970 Beiträge: 3570
|
Verfasst am: Mi Dez 19, 2007 11:32 am Titel: Altersgrenze berechnen |
|
|
Die Tastatur von Klaus Blaschke wurde wie folgt gedrückt:
>> Wenn ich das richtig sehe, ist +2 falsch und +1 richtig:
>> =JAHR((HEUTE()+1)-B2)-1900
>
> *Vor* 1910 ist ist +2 richtig und *ab* 1910 ist +1 richtig.
>
> =WENN(JAHR(B2)<1910;JAHR((HEUTE()+2)-B2)-1900;JAHR((HEUTE()+1)-B2)-1900)
Und es ist auch anders, wenn der 29.2.2000 zwischen den beiden Datümern
steht, als wenn nicht. Ich bin grad am Überlegen einer linearen oder
nicht-linearen Transformation ... vielleicht schaff' ich es ja.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
.
|
|
| Nach oben |
|
 |
Alexander Wolff
Anmeldedatum: 01.01.1970 Beiträge: 3570
|
Verfasst am: Do Dez 20, 2007 1:44 pm Titel: Altersgrenze berechnen |
|
|
> ich starte mal einen ersten Versuch - 1 oder 2 kann für ein
> Heute-Datum in diesem Jahrhundert (Das Jahr 2100 habe ich noch nicht
> getestet) mit folgender Formel ermittelt werden:
>
> =WENN(REST(GANZZAHL(2*(HEUTE()-60)/1461);2);2;1)
>
> eingesetzt wird daraus
>
> =JAHR((HEUTE()+WENN(REST(GANZZAHL(2*(HEUTE()-60)/1461);2);2;1))-B2)-1900
HEUTE() = A2 (neueres Datum)
=JAHR((A2+WENN(REST(GANZZAHL(2*(A2-60)/1461);2);2;1))-B2)-1900
B2: 29.02.1992 bis
A2: 28.02.2096 müsste 103 ergeben. Bei Deiner Formel 104.
Ich habe gestern auch noch gegrübelt ... aber Datum ist immer eine heiße
Kiste. Vor allem tappt man immer wieder in die gleichen, obwohl schon selbst
gemachten, Fehler.
Deswegen habe ich auch kleinlaut meine Seite wieder zurückgezogen
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
.
|
|
| Nach oben |
|
 |
Alexander Wolff
Anmeldedatum: 01.01.1970 Beiträge: 3570
|
Verfasst am: Do Dez 20, 2007 2:25 pm Titel: Altersgrenze berechnen |
|
|
>> =JAHR((HEUTE()+WENN(REST(GANZZAHL(2*(HEUTE()-60)/1461);2);2;1))-B2)-1900
>
> HEUTE() = A2 (neueres Datum)
> =JAHR((A2+WENN(REST(GANZZAHL(2*(A2-60)/1461);2);2;1))-B2)-1900
>
> B2: 29.02.1992 bis
> A2: 28.02.2096 müsste 103 ergeben. Bei Deiner Formel 104.
Ich versuchs auch noch mal:
(A2 ist das ältere Datum)
=JAHR(B2+1+3*(TAG(B2)=TAG(A2))-A2)-1900
Diese Kombination ist besonders schmutzig! Iiiih! - Die 60 Datümer vor
1.3.1900 seien vom Testen ausgeschlossen.
Versuche Du doch bitte mal, da einen Fehler zu finden - denn es macht mehr
Spaß bei anderen als bei sich selbst, so dass Du sicher irgendeine fiese
Datumskombo findest, die ich nicht getestet habe
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
.
|
|
| Nach oben |
|
 |
Alexander Wolff
Anmeldedatum: 01.01.1970 Beiträge: 3570
|
Verfasst am: Do Dez 20, 2007 2:49 pm Titel: Altersgrenze berechnen |
|
|
Die Tastatur von Alexander Wolff wurde wie folgt gedrückt:
> Ich versuchs auch noch mal:
>
> (A2 ist das ältere Datum)
>
> =JAHR(B2+1+3*(TAG(B2)=TAG(A2))-A2)-1900
>
> Diese Kombination ist besonders schmutzig! Iiiih! - Die 60 Datümer vor
> 1.3.1900 seien vom Testen ausgeschlossen.
>
> Versuche Du doch bitte mal, da einen Fehler zu finden - denn es macht
> mehr Spaß bei anderen als bei sich selbst, so dass Du sicher
> irgendeine fiese Datumskombo findest, die ich nicht getestet habe :-)
A2 28.02.1999-29.02.2104 ist falsch (104 statt 105)
Man müßte also auch noch mit "Tage=29" boolsch korrigieren, oder so...
vielleicht hilft ja:
=JAHR(B2+1+3*(TAG(B2)>=TAG(A2))+(TAG(A2)-TAG(B2)>27)-A2)-1900
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
.
|
|
| Nach oben |
|
 |
Alexander Wolff
Anmeldedatum: 01.01.1970 Beiträge: 3570
|
Verfasst am: Do Dez 20, 2007 3:06 pm Titel: Altersgrenze berechnen |
|
|
> Man müßte also auch noch mit "Tage=29" boolsch korrigieren, oder so...
>
> vielleicht hilft ja:
> =JAHR(B2+1+3*(TAG(B2)>=TAG(A2))+(TAG(A2)-TAG(B2)>27)-A2)-1900
Nee, auch nicht: 1.1.-31.12. klappt dann manchmal nicht ... also
weitersuchen
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
.
|
|
| Nach oben |
|
 |
|