Softpicks.Net  Deutsch Foren-Übersicht Softpicks.Net Deutsch
Software Forum Deutsch
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Altersgrenze berechnen
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Softpicks.Net Deutsch Foren-Übersicht -> Microsoft Excel
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Alexander Wolff



Anmeldedatum: 01.01.1970
Beiträge: 3570

BeitragVerfasst am: Do Dez 20, 2007 3:19 pm    Titel: Altersgrenze berechnen Antworten mit Zitat



Die Tastatur von Alexander Wolff wurde wie folgt gedrückt:
>> 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


Hier hab ich noch keinen Fehler entdeckt:

=JAHR(B2+1+3*ODER(TAG(A2)-TAG(B2)={0;-1;-2;27;28;29;30})-A2)-1900

Wahrscheinlich kann man noch auf einige {}-mittige Elemente verzichten.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2


.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Alexander Wolff



Anmeldedatum: 01.01.1970
Beiträge: 3570

BeitragVerfasst am: Do Dez 20, 2007 6:00 pm    Titel: Altersgrenze berechnen Antworten mit Zitat



> Hier hab ich noch keinen Fehler entdeckt:
>
> =JAHR(B2+1+3*ODER(TAG(A2)-TAG(B2)={0;-1;-2;27;28;29;30})-A2)-1900
>
> Wahrscheinlich kann man noch auf einige {}-mittige Elemente
> verzichten.

Kann man nicht. Es scheint sich in etwa dies zu erhärten:

=JAHR(B2+4*ODER(TAG(A2)-TAG(B2)={0;-1;-2;26;27;28;29;30})-A2)-1900

Wesentlich verkürzen kann man den {}-Teil wohl nicht mehr.

Absolut sicher über die Lösung bin ich mir immer noch nicht.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2


.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden




Anmeldedatum: 01.01.1970
Beiträge: 312655

BeitragVerfasst am: Do Dez 20, 2007 7:24 pm    Titel: Altersgrenze berechnen Antworten mit Zitat



Hallo Alexander
Hallo Klaus

Am 20.12.2007 13:44:40 schrieb Alexander Wolff:

>> =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.

Ich habe mal die Formel von Klaus bearbeitet:
=JAHR((A2+WENN(REST(GANZZAHL(2*(A2-60)/1461);2);2;1))-B2)-1900-(B2=DATUM(JAHR(B2);2;29))

Bei Deiner Formel:
=JAHR(B2+4*ODER(TAG(A2)-TAG(B2)={0;-1;-2;26;27;28;29;30})-A2)-1900
bekomme ich die Fehlermeldung:
#ZAHL!

MfG
Klaus
.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Alexander Wolff



Anmeldedatum: 01.01.1970
Beiträge: 3570

BeitragVerfasst am: Do Dez 20, 2007 10:38 pm    Titel: Altersgrenze berechnen Antworten mit Zitat



>> =JAHR(B2+4*ODER(TAG(A2)-TAG(B2)={0;-1;-2;26;27;28;29;30})-A2)-1900
>>
>> Wesentlich verkürzen kann man den {}-Teil wohl nicht mehr.
>> Absolut sicher über die Lösung bin ich mir immer noch nicht.
>
> die kritischen Übergänge bestehen wohl bei den Schalttagen, aber die
> werden von der Formel richtig ausgewertet. Ich habe viele Situationen
> durchgespielt, aber für 100%ige Sicherheit müsste man wohl alle
> Möglichkeiten betrachten. Mit VBA ist das sicher möglich, aber wie sollte
> ein fehlerfreier Vergleich in VBA aussehen?
>
> Nach meinem Dafürhalten funktioniert deine Excelformel einwandfrei.

Klingt beruhigend :-)

Ich habe nach manuellem Probieren eine VBA-Testroutine *) geschrieben, die
1.000.000 zufällige Datenpaare vom drittletzten bis dritten Monatstag von
Rnd()-Datümern (Zufallszahl) gegeneinanderstellt (also nur bspw. 26.2.-3.3.
für Märzdatümer oder 29.1.-3.2. für Februardatümer, wenn das Zufallsdatum im
jeweiligen Monat liegt, und dies für alle Monate), und diese 5mal
durchlaufen lassen (ca. je eine Minute). Es kam auch bei diesem "brute
force"-Test keine einzige Message wegen einer Differenz zu DATEDIF(..."Y").

Daher steht die Seite www.xxcl.de/0064.htm erst mal wieder online.

*) poste ich morgen, hab ich grad nicht zur Hand
--
Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2


.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Alexander Wolff



Anmeldedatum: 01.01.1970
Beiträge: 3570

BeitragVerfasst am: Do Dez 20, 2007 10:50 pm    Titel: Altersgrenze berechnen Antworten mit Zitat



> =JAHR(B2+4*ODER(TAG(A2)-TAG(B2)={0;-1;-2;26;27;28;29;30})-A2)-1900
> bekomme ich die Fehlermeldung:
> #ZAHL!

Achtung: Bei mir ist A2 vor B2! Smile Du hast es andersrum eingegeben.
--
Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2


.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Alexander Wolff



Anmeldedatum: 01.01.1970
Beiträge: 3570

BeitragVerfasst am: Fr Dez 21, 2007 2:54 pm    Titel: Altersgrenze berechnen Antworten mit Zitat



Die Tastatur von Alexander Wolff wurde wie folgt gedrückt:
>>> =JAHR(B2+4*ODER(TAG(A2)-TAG(B2)={0;-1;-2;26;27;28;29;30})-A2)-1900
>>>
>>> Wesentlich verkürzen kann man den {}-Teil wohl nicht mehr.
>>> Absolut sicher über die Lösung bin ich mir immer noch nicht.
>>
>> die kritischen Übergänge bestehen wohl bei den Schalttagen, aber die
>> werden von der Formel richtig ausgewertet. Ich habe viele Situationen
>> durchgespielt, aber für 100%ige Sicherheit müsste man wohl alle
>> Möglichkeiten betrachten. Mit VBA ist das sicher möglich, aber wie
>> sollte ein fehlerfreier Vergleich in VBA aussehen?
>>
>> Nach meinem Dafürhalten funktioniert deine Excelformel einwandfrei.
>
> Klingt beruhigend Smile
>
> Ich habe nach manuellem Probieren eine VBA-Testroutine *)
> geschrieben, die 1.000.000 zufällige Datenpaare vom drittletzten bis
> dritten Monatstag
> von Rnd()-Datümern (Zufallszahl) gegeneinanderstellt (also nur bspw.
> 26.2.-3.3. für Märzdatümer oder 29.1.-3.2. für Februardatümer, wenn
> das Zufallsdatum im jeweiligen Monat liegt, und dies für alle
> Monate), und diese 5mal durchlaufen lassen (ca. je eine Minute). Es
> kam auch bei diesem "brute force"-Test keine einzige Message wegen
> einer Differenz zu DATEDIF(..."Y").
> Daher steht die Seite www.xxcl.de/0064.htm erst mal wieder online.
>
> *) poste ich morgen, hab ich grad nicht zur Hand


Tja, tatsächlich doch noch Fehler gefunden (Routine hier schon upgedatet):

Sub BruteForceTestingOfDATEDIFAlternatives()
For i = 1 To 1000000
a = Int(Rnd() * 100000) + 61
b = Int(a + Int(1 + Rnd() * 5000) * 365.2425) 'ensuring a year'S diff
a = a - Day(a) + 4 - Int(Rnd() * Cool 'testing days close to month's end
b = b - Day(b) + 4 - Int(Rnd() * Cool
c = Evaluate("=YEAR(" & b & "-" & a & "+4*((ABS(DAY(" & a & _
")+1.5-DAY(" & b & "))<2)+(ABS(DAY(" & a & ")-27.5-DAY(" & b & _
"))<3)))-1900-DATEDIF(" & a & "," & b & ",""Y"")")
If c <> 0 Then
' MsgBox i & ": <" & c & "> " & a & "|" & b
j = j + 1: Range("A" & j) = a:Range("B" & j) = b
End If
Next
End Sub

Die Formel erweitert sich um -3 und 25:

=JAHR(B1-A1+4*ODER(TAG(A1)-TAG(B1)={0;-1;-2;-3;25;26;27;28;29;30}))-1900

Pocket Excel (hat kein DATEDIF, daher besonders wichtig für
ActiveSync-Dokumente!) kennt keine {Matrizen}, daher Umformung zu:

=JAHR(B1-A1+4*((ABS(TAG(A1)+1,5-TAG(B1))<2)+(ABS(TAG(A1)-27,5-TAG(B1))<3)))-1900
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2


.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Alexander Wolff



Anmeldedatum: 01.01.1970
Beiträge: 3570

BeitragVerfasst am: Fr Dez 21, 2007 4:05 pm    Titel: Altersgrenze berechnen Antworten mit Zitat



Die Tastatur von Alexander Wolff wurde wie folgt gedrückt:
>> =JAHR(B2+4*ODER(TAG(A2)-TAG(B2)={0;-1;-2;26;27;28;29;30})-A2)-1900
>> bekomme ich die Fehlermeldung:
>> #ZAHL!
>
> Achtung: Bei mir ist A2 vor B2! Smile Du hast es andersrum eingegeben.

Die Formel stimmt noch nicht, siehe in anderem Ast des Threads.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2


.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden




Anmeldedatum: 01.01.1970
Beiträge: 312655

BeitragVerfasst am: Sa Dez 22, 2007 6:47 pm    Titel: Altersgrenze berechnen Antworten mit Zitat



Hallo Alexander
Hallo Klaus

Am 21.12.2007 14:54:53 schrieb Alexander Wolff:

> Die Formel erweitert sich um -3 und 25:
> =JAHR(B1-A1+4*ODER(TAG(A1)-TAG(B1)={0;-1;-2;-3;25;26;27;28;29;30}))-1900
>
> Pocket Excel (hat kein DATEDIF, daher besonders wichtig für
> ActiveSync-Dokumente!) kennt keine {Matrizen}, daher Umformung zu:
>
> =JAHR(B1-A1+4*((ABS(TAG(A1)+1,5-TAG(B1))<2)+(ABS(TAG(A1)-27,5-TAG(B1))<3)))-1900

Das hat mir keine ruhe gelassen, ich wollte mal sehen ob ich
auch eine passende Formel zusammen bekomme.

Ich hoffe die Formel ist jetzt richtig:

=JAHR(B1)-JAHR(A1)-((DATUM(1900;MONAT(B1);TAG(B1))-DATUM(1900;MONAT(A1);TAG(A1)))<0)

MfG
Klaus
.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Alexander Wolff



Anmeldedatum: 01.01.1970
Beiträge: 3570

BeitragVerfasst am: Sa Dez 22, 2007 10:33 pm    Titel: Altersgrenze berechnen Antworten mit Zitat



> Ich hoffe die Formel ist jetzt richtig:
> =JAHR(B1)-JAHR(A1)-((DATUM(1900;MONAT(B1);TAG(B1))-DATUM(1900;MONAT(A1);TAG(A1)))<0)

Klasse! Und viel weniger umständlich als meine!
Da =DATUM(;1;1)=DATUM(1900;1;1) WAHR ergibt, wird sie sogar noch kürzer:

=JAHR(B1)-JAHR(A1)-((DATUM(;MONAT(B1);TAG(B1))-DATUM(;MONAT(A1);TAG(A1)))<0)
Das nehme ich morgen in meine Seite mit auf Smile
--
Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2


.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden




Anmeldedatum: 01.01.1970
Beiträge: 312655

BeitragVerfasst am: So Dez 23, 2007 3:32 pm    Titel: Altersgrenze berechnen Antworten mit Zitat



Am 22.12.2007 22:33:06 schrieb Alexander Wolff:

> Klasse! Und viel weniger umständlich als meine!
> Da =DATUM(;1;1)=DATUM(1900;1;1) WAHR ergibt, wird sie sogar noch kürzer:
>
> =JAHR(B1)-JAHR(A1)-((DATUM(;MONAT(B1);TAG(B1))-DATUM(;MONAT(A1);TAG(A1)))<0)
> Das nehme ich morgen in meine Seite mit auf :-)

Das freut mich. :-)

Ich habe auf Deiner Seite: http://www.xxcl.de/0064.htm
gesehen, das Du die Formel noch weiter verkürzt hast:

=JAHR(B1)-JAHR(A1)-(MONAT(B1)+TAG(B1)%
Sehe ich das richtig, das man % auch noch weglassen kann?

=JAHR(B1)-JAHR(A1)-(MONAT(B1)+TAG(B1)
MfG
Klaus
.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Alexander Wolff



Anmeldedatum: 01.01.1970
Beiträge: 3570

BeitragVerfasst am: So Dez 23, 2007 4:52 pm    Titel: Altersgrenze berechnen Antworten mit Zitat



> Ich habe auf Deiner Seite: http://www.xxcl.de/0064.htm
> gesehen, das Du die Formel noch weiter verkürzt hast:
>
> =JAHR(B1)-JAHR(A1)-(MONAT(B1)+TAG(B1)%<MONAT(A1)+TAG(A1)%)
>
> Sehe ich das richtig, das man % auch noch weglassen kann?
>
> =JAHR(B1)-JAHR(A1)-(MONAT(B1)+TAG(B1)
Nein, dann müßte es heißen: MONAT(B1)*32+TAG(B1) die Hierarchie "Monat vor Tag" gewährleistet bleibt. Mit TAB(B1)% werden die
Tage einfach zweistellig hinters Komma gestellt, was aufgrund der Obergrenze
von 31 zufällig hinhaut. - Deine Idee war jedenfalls bahnbrechend! Du hast
eben klarer gedacht. Smile
--
Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2


.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Softpicks.Net Deutsch Foren-Übersicht -> Microsoft Excel Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht teilnehmen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de