Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
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
Inhaltsverzeichnis

DateDiff Funktion berechnet falsche Lösung

DateDiff Funktion berechnet falsche Lösung
31.07.2014 13:41:14
j.r.
Hallo zusammen,
in einem Makro möchte ich u.a. die zeitliche Differenz (in Monaten) zwischen einem bestimmten Datum in der Vergangenheit und dem aktuellen spricht heutigen Datum berechnen.
Hierfür habe ich folgenden Auszug aus dem Makro:
Wb2.Sheets(1).Cells(k, 5).Value = DateDiff("m", Wb2.Sheets(1).Cells(k, 4).Value,_ Wb2.Sheets(1).Range("B2").Value) 'Anzahl Monate Account aktiv_
Wb2.Sheets(1).Cells(k, 5).NumberFormat = "0"
Erläuterungen:
Wb2.Sheets(1).Cells(k, 4).Value ' in dieser Zelle steht "22.01.2014"
Wb2.Sheets(1).Range("B2").Value 'in dieser Zelle steht heutiges Datum (=HEUTE())
Als Ergebnis spuckt mir das Makro 20 Monate Differenz aus.
Wo liegt der Fehler?
Vielen Dank
Gruß
j.r.

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

Betreff
Datum
Anwender
Anzeige
AW: DateDiff Funktion berechnet falsche Lösung
31.07.2014 13:51:49
Mister-B
Hallo,
hast du dich vielleicht vertippt?
Es heisst "DateDif" und nicht "DateDiff". Außerdem bei mir sieht die Formel so aus:
=DATEDIF(D1;A1;"m")
A1 = Heute
D1 = Vergangenheit
Gruß
Martin

AW: DateDiff Funktion berechnet falsche Lösung
31.07.2014 13:54:36
j.r.
Nein, im VBE heißt es DateDiff()

AW: DateDiff Funktion berechnet falsche Lösung
31.07.2014 13:57:55
MiGre
Hallo j.r.!
Ich habe einmal eine ähnliche Berechnung in einer Funktion umgesetzt, vielleicht hilft Dir das weiter:
Function DateTest(ALT As Date, HEUT As Date)
DateTest = DateDiff("m", ALT, HEUT, vbMonday, vbFirstFourDays)
End Function
ALT = der 22.01. in Deinem Beispiel
HEUT = das Vergleichsdatum (zB Zelle mit Heute())
Hoffe das hilft Dir!
Beste Grüße
MiGre

Anzeige
AW: DateDiff Funktion berechnet falsche Lösung
31.07.2014 14:07:15
ChrisL
Hi
Beispieldatei (reduziert auf das Problem) wäre hilfreich, weil der Code scheint mir OK.
Kann mir denken, dass es irgendwas mit den Datentypen zu tun hat z.B. Datum als Text. Oder Tabelle nicht aktualisiert (=HEUTE) oder die Schreibweise von Daten (z.B. Monat/Tag vertauscht) usw.
cu
Chris

AW: DateDiff Funktion berechnet falsche Lösung
31.07.2014 15:17:43
j.r.
Weiß jemand, wie man das Problem mit dem Datentyp "Text" gelöst bekommt?
Vielen Dank.
Gruß
j.r.

DateDiff
31.07.2014 15:33:49
Erich
Hi ?,
wo hst du welches Problem mit dem Datentyp "Text"? Geht's vielleicht ein wenig genauer?
Welcher Wert steht in Cells(k, 4)? Wie kommt der Wert zustande?
Welches Zahlenformat hat die Zelle Cells(k, 4)?
Wenn da bei dir 20 Monate rauskommen, müsste da der November 2012 auftauchen - 20 Monate vor heute. Hilft das ?
Eine Mini-Beispielmappe wäre sicher hilfreich.
By the way:
Wie wäre es mit einer Rückmeldung zu "Datumsformat ändern" in
https://www.herber.de/forum/messages/1373289.html
bzw.
https://www.herber.de/forum/archiv/1372to1376/t1373289.htm
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: DateDiff
31.07.2014 15:47:25
j.r.
Hallo,
Wb2.Sheets(1).Cells(k, 4).Value ' in dieser Zelle steht "22.01.2014"
Wb2.Sheets(1).Range("B2").Value 'in dieser Zelle steht heutiges Datum (=HEUTE())

nix Neues
31.07.2014 16:29:11
Erich
Hi,
das war jetzt aber nichts Neues und wenig Erhellendes. Die beiden Zeilen stehen hier schon ganz vorn im Thread.
Auf meine weiteren Fragen bist du gar nicht eingegangen. Schade. Das wird dir kaum helfen, eine Lösung zu erhalten.
Aber du hast ja die Möglichkeit, das noch nachzuholen...
Hier mal eine Mini-BeiSpielMappe, vielleicht könntest du sie um deine fehlerhaften Daten ergänzen?
https://www.herber.de/bbs/user/91816.xlsm
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
ausgesprochen zäh ...
31.07.2014 20:01:00
Erich
Hi Jens,
... gestaltet sich hier die Zusammenarbeit mit dir. :-(
"Hier mal eine Mini-BeiSpielMappe, vielleicht könntest du sie um deine fehlerhaften Daten ergänzen?"
Wäre das denn so schwer gewesen?
Ich erwarte nun, dass du in der kleinen Mappe eine Zeile mit Daten so ergänzt, dass da mit deinen Daten
(22.01.2014 bis heute) DateDiff() das Ergebnis 20 (Monate) liefert - wie in deiner Mappe.
Stattdessen postest du nun einen umfangreicheren Code, der nur weitere Fragen aufwirft.
Hier die für das Problem wohl wesentlichen Zeilen:
Wb1.Sheets(1).Range("S:S").Copy Destination:=Wb2.Sheets(2).Range("D:D") 'Creationdate
Da bleibt verborgen, was genau in Wb1.Sheets(1).Range("S:S"), dann in Wb2.Sheets(2).Range("D:D"), steht.
Wb2.Sheets(2).Cells(j, 5).Value = Wb2.Sheets(2).Cells(j, 4).Value
ändert nichts
Wb2.Sheets(2).Cells(j, 5).NumberFormat = "dd/mm/yyyy"
Wenn in Cells(j, 5) ein Text steht, ändert sich nichts an der Anzeige.
Wenn in Cells(j, 5) eine Zahl (ein Datum) steht, ändert sich die Anzeige?
Wb2.Sheets(1).Cells(k, 4).Value = Left(Wb2.Sheets(2).Cells(j, 5).Text, 10)
Wenn in Cells(j, 5) ein Text steht, kommen die ersten 10 Zeichen davon in Cells(k, 4).
Wenn in Cells(j, 5) eine Zahl (ein Datum) steht, kommt ein Text in Cells(k, 4) mit dem Aussehen TT.MM.JJJJ
Wb2.Sheets(1).Cells(k, 4).NumberFormat = "0"
ist wirkungslos.
Wenn in Cells(k, 4) ein Text steht, könnte man der Zelle auch das Format "0.00%" geben - ohne Wirkung.
Wb2.Sheets(1).Cells(k, 4).HorizontalAlignment = xlRight
Hier willst du wohl den Wert von Cells(k, 4) rechtsbündig anzeigen, damit er wie eine Zahl/ein Datum aussieht.
(Texte werden standardmäßig linksbündig angezeigt.)
Wb2.Sheets(1).Cells(k, 5).Value =
DateDiff("m", Wb2.Sheets(1).Cells(k, 4).Value, Wb2.Sheets(1).Range("B2").Value) 'Anz. Monate Account aktiv
DateDiff() erwartet als 2. und 3. Parameter jeweils ein Datum. Wenn in der Kette, die zu dem Text in Cells(k, 4) führt,
mal ein Datum steht - warum übergibst du nicht einfach dieses Datum an DateDiff()?
Wozu soll diese ganze Text-Mempelei gut sein?
Noch ein Tipp:
Manchal ist es nicht so leicht zu sehen, ob in einer Zelle (etwa D7) eine Zahl oder ein Text steht.
Sicher kann man das feststellen, indem man in eine leere Zelle die Formel =ISTZAHL(D7) oder auch =ISTTEXT(D7) schreibt.
Und noch eine Bemerkung:
Man kennt mich hier als ausdauernd und hartnäckig. Aber das ist natürlich nicht grenzenlos. :-)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige