Bernhard hat mich darauf aufmerksam gemacht. Ist mir bislang nicht aufgefallen.
Die Funktion DATEDIF in Excel und die VBA-Funktion DateDiff rechnen unterschiedlich.
Trägt man in zwei Zellen die Datumsangaben 20.05.2021 und 01.06.2021 ein, so beträgt bei der Excelfunktion DATEDIF mit dem Parameter „M“ das Ergebnis 0, bei der VBA-Funktion dagegen 1.
Ich habe eine kleine Tabelle aufgebaut: im oberen Teil einige Datumsdifferenzen auf Basis des Monats:
Im unteren Teil verwende ich ein kleines VBA-Makro:
Sub BerechneDateDIFF()
Dim intZeile As Integer
Dim intSpalte As Integer
For intZeile = 21 To 30
For intSpalte = 2 To 20
ActiveSheet.Cells(intZeile, intSpalte).Value = DateDiff("M", ActiveSheet.Cells(intZeile, 1).Value, ActiveSheet.Cells(20, intSpalte).Value)
Next intSpalte
Next intZeile
End Sub
Das Ergebnis:
Die Unterschiede habe ich mit einer bedingten Formatierung farblich hervorgehoben.
Ein Dankeschön für den wertvollen Hinweis an Bernhard Ramroth.
Die Frage ist interessant: Aus einer Geburtstagsliste sollen all diejenigen angezeigt werden, die in dieser (laufenden Kalender-)Woche Geburtstag haben. Eine kleine Fingerübung, oder:
Zuerst wird das Geburtsdatum in ein Datum des aktuellen Jahres „transformiert“. Dann wird von diesem Datum und vom aktuellen Tag die ISOKALENDERWOCHE berechnet. Und schließlich beides miteinander verglichen:
Schau dir mal die Schritt in
der angefügten Tabelle an
Viel Spaß mit KW und
Geburtstag
Rene
Lieber René,
vielen Dank. Ich hatte es gleich gestern Abend noch nachgetüfftelt und bin zum Ergebnis gekommen, allerdings hatte ich das Datum anders umgewandelt.
Da sah dann so aus: =WENN(ISOKALENDERWOCHE(TAG(A1)&“.“&MONAT(A1)&“.“&JAHR(HEUTE()))=ISOKALENDERWOCHE(HEUTE());“Happy Birthday“;““) Viele Grüße Wolfgang
Ist auch richtig, Wolfgang –
meine Lösung ist natürlich besser *lach*
Im Ernst: ich mag es nicht,
wenn du ein Datum (intern eine Zahl) in einen Text umwandelst und diese
implizit wieder in ein Datum konvertieren lässt. Bei sehr vielen Datensätzen
dauert es länger als meine Lösung, die ein Datum als Datum lässt.
ich finde in Excel einfach keine Funktion QUARTALSENDE. Konkret: Ich benötige den letzten Tag (als Datum) des Quartals, in dem sich ein Datum befindet. Also beispielsweise:
1.1.2016 -> 31.03.2016
2.2.2016 -> 31.03.2016
5.5.2016 -> 30.06.2016
und so weiter.
Ist das Quartal nicht zu Ende?
Das ist richtig: DIESE Funktion gibt es in Excel leider nicht. Man muss sie zusammenbauen. Wenn in A1 das Datum steht, dann beispielsweise so:
(beide Funktionen suchen den letzten Monat des Quartals, addieren 1 (also verwenden den nächsten Monat) und von diesem Monat den ersten Tag. Davon wird 1 abgezogen. Oder auch so:
=MONATSENDE(A1;REST(3-MONAT(A1);3))
Man ermittelt die Anzahl der Monate, die zu dem Datum dazu gezählt werden muss.
Ich wollte Datumsangaben im ISO-Format, also: jjjj-mm-tt formatieren, aber es funktioniert nicht.
Die Antwort: Excel unterscheidet (fast) an keiner Stelle zwischen Groß- und Kleinschreibung – eine der wenigen Stellen ist die Formatierung des Monats. Hier muss man ein großes „M“ schreiben. Ein kleines „m“ ist reserviert für Minuten.