PDA

Vollständige Version anzeigen : Monatsletzten berechnen


Ich3
09.03.2001, 14:51
Hallo,

ich benötige in einem Excel-Makro den Monatsletzten = Maximale Tage in dem Monat. Februar z.B. 28 Tage usw.


Vielleicht kann mir einer helfen.

Danke JOJO

Horst Schulte
10.03.2001, 10:31
Hi,

kein Makro aber eine Formel:

=DATUM(JAHR(A7);MONAT(A7)+1;0)


Grüße
Horst

<p align="center"><a href="http://www.horst-schulte.de"><img border="0" src="http://www.horst-schulte.de/logo_hs.gif" alt="Horst Schulte's Portal für Bürohengste">

Ich3
10.03.2001, 21:40
Danke,

ich weiß zwar immer noch nicht warum es funktioniert, aber wichtig ist es geht.

JOJO

geronimo01
12.01.2012, 14:33
... die sich das auch fragen, hier die entsprechende VB(A)-Funktion:

Monatsletzter=DateAdd("d",-1,"01." & Month(Datum) + 1 & "." & Year(Datum))

Jetzt alles klar?

Zai-Ba
13.01.2012, 14:01
Nun eigentlich ganz einfach zu erkläre. Die Funktion lautet:
=DATUM(Jahr ; Monat ; Tag)

Eingesetzt wird nun folgendes:
Jahr = JAHR(A7) --> Das Jahr deines Datums
Monat = MONAT(A7)+1 --> Das ergibt den Folgemonat deines Datums
Tag = 0 --> Der "nullte" Tag in einem Monat ist der Tag VOR dem ersten des Monats

Der Trick ist also, dass du den Folgemonat betrachtest und von dort einen Tag zurück springst.
:idee:

GMG-CC
14.01.2012, 21:28
Hallo Zai-Ba,

gut beschrieben. Aber ob sich der Thread-Starter nach 3961 Tagen (sprich fast 12 Jahren) noch dafür interessiert, das ist nicht wirklich sicher :grins:

Erich G.
15.01.2012, 23:59
Hi zusammen,
auch wenn der Thread nun schon bald 11 (noch nicht 12) Jahre auf dem Buckel hat,
sollte die Frage doch mal beantwortet werden. :-)

Ich habe die Frage so verstanden, dass es nicht um das Monatsende als Datum geht,
sondern nur um den Tag - für den Febraur also um die Zahl 28 oder 29.

In Excel also (wenn in A1 ein Datum steht):
=32-TAG(A1-TAG(A1)+32)
oder länger:
=TAG(DATUM(JAHR(A1);MONAT(A1)+1;0))
Die Formeln stehen auch hier: http://www.excelformeln.de/formeln.html?welcher=176

Mit VBA:Sub aTest()
Dim datD As Date
datD = DateValue("02.02.2012")

MsgBox AnzahlMonatstage1(datD)
MsgBox AnzahlMonatstage2(datD)
End Sub

Function AnzahlMonatstage1(datT As Date)
AnzahlMonatstage1 = 32 - Day(datT - Day(datT) + 32)
End Function

Function AnzahlMonatstage2(datT As Date)
AnzahlMonatstage2 = Day(DateSerial(Year(datT), Month(datT) + 1, 0))
End Function