Anzeige
Archiv - Navigation
768to772
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
768to772
768to772
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

DateDiff v. DATEDIF

DateDiff v. DATEDIF
09.06.2006 20:21:49
Albin
Hi,
kann mir jemand sagen, warum folgendes Makro ein falsches Ergebnis ausgibt?
Das Ergebnis ist 47 und das ist falsch!

Sub Makro2()
Dim GebTag As Date, Heute As Date
Dim Alter
GebTag = CDate("12.06.1959")
Heute = Date
Alter = DateDiff("yyyy", GebTag, Date)
MsgBox Alter
End Sub

Die Formel im Tabellenblatt liefert das richtige Ergebnis, nämlich 46.
In N3 steht wieder der 12.06.1959
=DATEDIF(N3;HEUTE();"Y")
Mein Problem ist, dass ich ein _richtiges_ Ergebnis per Makro brauche.
Ratlose Grüße
A.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: DateDiff v. DATEDIF
09.06.2006 20:45:14
Ramses
Hallo
Aus der Hilfe:
"...Wird der 31. Dezember mit dem 1. Januar des unmittelbar folgenden Jahres verglichen, gibt DateDiff für Jahr ("yyyy") den Wert 1 zurück, obwohl nur ein Tag vergangen ist...."
Daraus lässt sich folgendes ableiten
Alter = DateDiff("yyyy", GebTag, Date)-1
Gruss Rainer
AW: DateDiff v. DATEDIF
09.06.2006 21:07:24
Erich G.
Hallo Rainer,
probier mal
Sub Makro2()
Dim GebTag As Date, Heute As Date
Dim Alter
GebTag = Date - 366
MsgBox GebTag
Alter = DateDiff("yyyy", GebTag, Date)
MsgBox Alter
Alter = DateDiff("yyyy", GebTag, Date) - 1
MsgBox Alter
With Range("IV1")
.Formula = "=DATEDIF(""08.06.2005"",""09.06.2006"",""y"")"
Alter = .Value
.ClearContents
End With
MsgBox Alter
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: DateDiff v. DATEDIF
09.06.2006 21:14:13
Ramses
Hallo Erich
Du musst natürlich prüfen ob das Geb.-Datum NACH oder VOR dem aktuellen Datum liegt um das korrekte Alter zu berechnen.
Im genannten Beispiel, liegt das Geburtsdatum NACH dem aktuellen Datum, also in der Zukunft.
Daher -1 Jahr ;-)
Gruss Rainer
AW: DateDiff v. DATEDIF
10.06.2006 05:57:27
schauan
Hallo Rainer,
das versteh ich jetzt nicht ganz. 1959 liegt doch vor dem aktuellen Datum oder sehe ich da was falsch? Und in Erich's code liegt der Tag auch über 1 Jahr zurück, (366 Tage). Da sieht man, dass man nicht einfach -1 schreiben kann, denn 366 Tage sollten schon 1 ergeben. Siehe auch meine Erläuterungen mit den Jahreszahlen 05 und 06 in meiner ersten Antwort. Die originale VBA-Funktion müsste hier wohl eher CountYearFigures heissen und nicht DateDif ...
Ich habe nun nicht den Text im vbarchiv durchgelesen, ein passendes codebeispiel findet man hier:
http://www.cpearson.com/excel/datedif.htm

Hoffe geholfen zu haben
Grüße von André aus Gera - Excel-97-2003

Anzeige
AW: DateDiff v. DATEDIF
09.06.2006 22:31:15
Albin
Hi,
vielen Dank für die zahlereichen Antworten. Damit komme ich weiter.
Gruß
Albin
AW: DateDiff v. DATEDIF
09.06.2006 21:01:48
schauan
Hallöchen,
im VBA wird die Differenz der Jahre gebildet ohne den Rest zu berücksichtigen. z.B. ist die Differenz zwischen 31.12.05 und 09.06.06 auch ein Jahr, =06-05, und die Differenz vom 01.01.06 bis zum 09.06.06 ist 0 =06-06
-siehe auch die Hilfe:
Wird der 31. Dezember mit dem 1. Januar des unmittelbar folgenden Jahres verglichen, gibt DateDiff für Jahr ("yyyy") den Wert 1 zurück, obwohl nur ein Tag vergangen ist.

Hoffe geholfen zu haben
Grüße von André aus Gera - Excel-97-2003

Anzeige
Und der Unterschied zu meiner Antwort ?? o.w.T.
09.06.2006 21:03:39
Ramses
...
AW: Und der Unterschied zu meiner Antwort ?? o.w.T.
10.06.2006 05:32:39
schauan
Hallo Rainer,
die Reihenfolge der Antworten zeigt nicht, wann ein Beitrag begonnen wurde zu schreiben sondern nur das Absenden des selbigen. So ist es also möglich, dass zwischenzeitlich andere Antworten eintrudeln, das müsstest Du als Stammgast eigentlich wissen ;-)
Na ja, meistens geht es da nur um Sekunden oder ein Minütchen, aber manchmal ruft einen auch die Frau oder andere wichtige Dinge passieren zwischendurch ...
AW: DateDiff v. DATEDIF
09.06.2006 21:13:31
Erich G.
Hallo Albin,
dazu findet sich was bei
https://www.herber.de/mailing/012898h.htm
und
http://www.vbarchiv.net/archiv/tipp_1308.html
Herbers Möglichkeit könnstest du auch so einsetzen:
Sub Makro2()
Dim GebTag As Date
Dim Alter
GebTag = CDate("12.06.1959")
With Range("IV2")
.Formula = "=DATEDIF(""" & CStr(GebTag) & """,""" & CStr(Date) & """,""y"")"
Alter = .Value
.ClearContents
End With
MsgBox Alter
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: DateDiff v. DATEDIF
09.06.2006 21:15:49
Ramses
Hallo Erich
"...Herbers Möglichkeit könnstest du auch so einsetzen:..."
Vorsicht !
Wenn Du "UsedRange" in deinem Code verwendest, dann geht dein Bereich bis zum nächsten öffnen der Mappe nun bis IV2 :-)
Gruss Rainer

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige