Anzeige
Archiv - Navigation
1552to1556
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

Datumskorrektur

Datumskorrektur
12.04.2017 22:18:19
Erwin
Hallo Excelfreunde,
suche eine Funktion "kDatum(ByVal d as String) as Sting" die ein falsches Datum auf den letzten Tag im Monat korrigiert.
Das falsche Datum (d) liegt als String vor, es kann sich aber auch um ein gültiges Datum handeln:
d="31.04.2017" kDatum="30.04.2017"
d="31.06.2016" kDatum="30.06.2017"
d="27.06.2014" kDatum="27.06.2014"
d="31.02.2012" kDatum="29.02.2012"
d="04.07.1999" kDatum="04.07.1999"
d="40.11.2011" kDatum="30.11.2011"
Sonderfälle:
d="dd.mm.jjjj", wobei mm=00 kDatum="01.01.jjjj"
d="dd.mm.jjjj", wobei mm>12 kDatum="31.12.jjjj"
Gruß Erwin

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumskorrektur
12.04.2017 23:18:25
CitizenX
Hi,
Option Explicit
Function kDatum(ByVal d As String) As String
Dim splitDate
splitDate = Split(d, ".")
Select Case splitDate(1)
Case Is > "12"
splitDate(1) = "12"
Case "00"
splitDate(1) = "01"
End Select
d = Join(splitDate, ".")
splitDate = Split(d, ".")
If Not IsDate(d) Then
splitDate(0) = Day(DateSerial(CLng(splitDate(2)), CLng(splitDate(1)) + 1, 0))
End If
kDatum = Join(splitDate, ".")
End Function
VG
Steffen
AW: Datumskorrektur
13.04.2017 07:39:44
Sven
oder ein wenig kürzer:

Function kdatum(ByVal d As String) As Date
Dim dArr As Variant
If IsDate(d) = False Then
dArr = Split(d, ".", -1)
kdatum = DateSerial(Val(dArr(2)), Val(dArr(1)) + 1, 0)
Else
kdatum = CDate(d)
End If
End Function

Anzeige
AW: Datumskorrektur
14.04.2017 16:37:30
Erwin
Vielen Dank CitizenX und Sven Söllner,
funktioniert bei den beiden Sonderfällen nicht.
Macht nichts, da ich mögliche Fehler auf der Eingabeseite, also die Daten
für den Parameter d, bereits eliminiert habe. Bleibt dann nur noch der 29.02.,
den es nur im Schaltjahr gibt und das geht mit den beiden von euch angeboten
Funktionen, wenn mit einem beliebigen Jahr komplementiert wird:
d="29.02.2017" kDatum="28.02.2017"
d="29.02.2016" kDatum="29.02.2016"
d="05.03.2015" kDatum="05.03.2015"

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige