Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Excel 2016 VBA für Profis

Datumswerte umrechnen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Berechnungen mit Datumswerten sind ziemlich kompliziert. Daher stellt VBA eigene Funktionen bereit, welche beispielsweise die Differenz zwischen zwei Datumswerten ermitteln können.

Transkript

Der Umgang mit Datumswerten ist eigentlich erfreulich einfach. Ich habe Ihnen hier schon zwei, drei Beispiele hingeschrieben, als Konstanten, mit denen ich rechnen möchte, und das Rechnen dürfen Sie ganz wörtlich nehmen, denn hinter den Datumswerten verbergen sich eigentlich Nachkommazahlen, vor dem Komma die Anzahl der Tage seit dem 01.01.1900, nach dem Komma die Prozente von den heutigen 24 Stunden. Wenn ich also die Differenz zwischen Weihnachten und Ostern ausrechnen will, also "sub Datumsdifferenz", und ich sage schon mal in Tagen, dann kann ich nach "Debug.Print" ganz einfach schreiben: das größere Datum Weihnachten minus dem kleineren Datum, nämlich Ostern. Und nach dem Speichern und Kompiliercheck kann ich mit F5 sehen, es sind 272 Tage dazwischen. Da können Sie ganz entspannt so tun, als seien das normale Zahlen. Es wird ein bisschen schwieriger, wenn ich das in Wochen haben möchte, oder sagen wir, es wird nicht schwieriger, sondern genauer, und das kann durchaus ein Nachteil sein. Also ich könnte einfach hingehen, die gleiche Prozedur nehmen und das Ergebnis durch sieben teilen. Sicherheitshalber Klammern drum, sonst würden Sie nämlich das Osterdatum durch sieben teilen und dann von Weihnachten abziehen. Aber wenn wir uns das angucken mit F5, sehen Sie, das ist zuviel des Guten. So genau wollte ich das gar nicht wissen. Jetzt muss ich mich entscheiden, ob ich aufrunden oder abrunden will, also, ich könnte zum Beispiel die Funktion "Fix" benutzen und mit F5 sehen Sie dann, es wird abgerundet, oder ich nehme die Funktion "CInt" mit F5 , die würde aufrunden. Also, das ist freie Auswahl. Ich lasse es mal sozusagen im Original stehen, denn es gibt eine Alternative, eine Funktion, die das direkt erledigt und die auch mehr kann, die heißt "DateDiff" und die will als erstes Argument sehen, welches Intervall gewünscht ist. Ärgerlicherweise als String, es gibt es also keine Ausklappliste. Sie müssen bei Bedarf in der Hilfe nachgucken. Wenn Sie wochenweise das rechnen wollen, dann mit einem kleinen "w" und dann geben Sie das eine Datum an, also Ostern und dann das andere Datum nämlich Weihnachten. Und Sie sehen, der liefert ganze Wochen zurück, also, nachspeichern und Kompiliercheck mit F5, hier eine exakte 38. Das gibt es auch für Jahre, Monate und so was. Das ist also sehr flexibel, und bei Wochen kann man noch durch sieben teilen, aber für die Differenz in Monaten kann man nicht einfach durch 30 oder 31 teilen. Das stimmt ja immer nicht. Hingegen können Sie, wenn Sie hinzufügen wollen wiederum in Tagen, auch ganz banal wieder addieren, also "sub DatumHinzuInTagen()", mit "debug.print", dann nehmen wir einfach das Weihnachtsdatum, weil dann auch so schön boßhaft auch ein Jahreswechsel dazwischen liegt, und frage mal, was denn 14 Tage später ist, und da können Sie auf die Zahl, die hier drin steckt, einfach 14 drauf addieren, und mit F5 sehen Sie, das ist der 7. Januar im nächsten Jahr. Und sogar der Datentyp stimmt, wenn Sie an dieser Stelle die TypeName Funktion mal darauf anwenden und dann mit F5 sehen, das ist im Ergebnis ein Date wieder, obwohl zwischendurch eine Integer Zahl drauf gezählt wurde. Also, klappt völlig unbedenklich, wenn Sie ganze Tage rechnen wollen. Schwieriger wird es, wenn Sie Monate hinzuzählen wollen, "sub DatumHinzuInMonaten()", denn da haben Sie das gleiche Problem, wie bei der Differenz, da können Sie nicht einfach sagen, Ich zähle mal 3 mal 30,5 drauf, oder so, wird schon irgendwie hinkommen. Nein, wird es nicht, es wird immer irgendwie daneben liegen, also sollten Sie gleich die richtige Funktion nehmen, die heißt "DateAdd" und hat ebenso als ersten Parameter ein Intervall. Wenn ich also Monate addieren will, dann ein "m", dann muss ich sagen wie viele, sagen wir ruhig zwei, und dann auf das Weihnachtsdatum wieder und wenn das der 24.12.2016 ist, dann ist jetzt also der 24.02, wie Sie mit F5 sehen, von 2017 das Ergebnis. Ohne dass Sie jetzt drauf achten müssen, ob Sie da irgendwelche langen und kurzen Monate dazwischen haben. Sie können das gerne mal mit dem 31. probieren, auch dann funktioniert es fehlerfrei. Und dann gibt es noch den dritten Fall, den ich oben schon vorbereitet habe. Die dritte Konstante ist nämlich gar kein Datum. Sie sieht ähnlich aus, wie ein Datum, nach Augenschein halten Sie das für ein Datum, aber aus technicher Sicht ist es ein Text. Und dazu muss ich erstmal gucken, wie ich das umwandeln kann. Das ist eine Funktion, die ähnlich wie die Value-Funktion, also "DatumUmwandeln", in der Lage ist aus einer Zeichenkette ein echtes Datum zu machen. Deswegen heißt sie auch "DateValue" und die kriegt ein Text übergeben und zwar einen der hoffentlich auch so was wie ein Datum enthält. Wenn ich das mit F5 ausführe, dann sehen Sie jetzt allein schon an der Formatierung, dass dort ein echtes Datum daraus gemacht ist. Wenn das irgendwie geht, also wenn ich in einem deutschen Excel natürlich sowas schreibe und dann dies hier ausführen will mit F5, dann gibt es ein "Typen unverträglich", weil das nicht verständlich ist. Auf einem amerikanischen System würde das laufen, und wenn Sie ein Januar schreiben, muss es ein Deutschsprachiges sein und wenn es ein Jänner ist, ein österreichisches System, also da gibt es schon ein paar kleine Hürden, aber gemessen daran, dass Sie einen fast beliebigen Text einlesen können, ist es gut verträglich. Sie können auch vorher prüfen, ob das ein Datum sein könnte, also "IsDate" ist die Funktion, die das macht, die ist allerdings deutlich empfindlicher, also das würde man dann so schreiben, und mit F5 sehen Sie, die Funktion "IsDate" wäre einverstanden, wenn hier irgendwas ungültiges drin steht und wir es mit F5 starten, dann passiert nichts, weil schon "IsDate" entschieden hat, kann ich nichts damit anfangen. Die sind sich, muss man ehrlich sagen, nicht immer ganz einig, ob es nun ein Datum sein könnte und ob man eines wirklich umwandeln darf, aber im Normalfall sollten Sie das immer so prüfen.

Excel 2016 VBA für Profis

Nutzen Sie die Möglichkeiten der Programmiersprache VBA in Excel 2016, um eigene Dialoge zu erstellen, auf andere Arbeitsmappen zuzugreifen und wichtige Funktionen einzusetzen.

5 Std. 52 min (55 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.01.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!