Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datum vom letzten Montag ausgeben

Datum vom letzten Montag ausgeben
12.11.2020 18:16:57
Christian
Hallo,
ich bitte um eure Hilfe.
einmal bei folgenden Formeln
=WAHL(MAX(MIN(4-(MAX(H2:I2)

wobei M1 = =DATUM(JAHR(HEUTE())-30;MONAT(HEUTE());1)
und einmal bei der Zeile aus einem VBA Code
url = "https://www.imdb.com/search/name/?birth_date=" & Year(Date) - 30 & "-" & Month(Date) & "-01," & Year(Date) - 18 & "-" & Month(Date) & "-01&gender=female&roles=" & ttNummer & "&has=birth-date&adult=include&sort=birth_date,asc&count=100&start=" & startListeAktuell
bislang wird an diesen Stellen der erste des aktuellen Monats vor 30 bzw. 18 Jahren ausgegeben, also aktuell der 1.11.1990 bzw. der 1.11.2002.
Wie bekomme ich es so geändert, dass stattdessen das Datum des letzten Montags und von da an 18 bzw. 30 Jahre zurück genommen wird, also aktuell der 9.11.1990 bzw. der 9.11.2002?
2 zusätzliche Sachen noch dazu?
1. war der letzte Montag reinzufällig der 29.2. gibt es rechnerisch ja keinen 29.2. vor 18 bzw. 30 Jahren, dann soll der 1.3. genommen werden
2. Wenn das ganze an einem Montag ausgeführt wird, soll das aktuelle Datum genommen werden.
Danke für eure Hilfe
Christian
Excel 2019, kein Office 365
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachtrag
12.11.2020 18:19:52
Christian
sorry jedesmal wenn ich die Wahl Formel versuche zu posten, wird sie abgeschnitten.
Sie ist aber denke ich auch nicht relevant für die Problemlösung, da außer dem Bezug auf M1 sie nichts mit dem gewünschten Datum zu tun hat.
AW: Nachtrag
13.11.2020 01:31:17
ralf_b
versuchs mal mit der wochentag-formel. die liefert dir je nach Einstellung eine Zahl und die kannst du dann von Heute abziehen, sodass du immer auf letzten Montag landest.
Anzeige
AW: Nachtrag
13.11.2020 06:29:18
Christian
Hallo Ralf,
meinst du eventuell
=DATUM(JAHR(HEUTE()+2-WOCHENTAG(HEUTE()))-30;MONAT(HEUTE()+2-WOCHENTAG(HEUTE()));TAG(HEUTE() +2-WOCHENTAG(HEUTE())))
?
Scheint zumindest so zu funktionieren. Danke.
Allerdings ist das Problem mit dem VBA Code noch nicht gelöst.
Gruß
Christian
Anzeige
AW: Nachtrag
13.11.2020 09:23:40
ralf_b
ich dachte an sowas

=HEUTE()-WAHL(WOCHENTAG(HEUTE();11);0;1;2;3;4;5;6)


Dim sday As String, birth_date as String
sday = Format(day(Date) - WorksheetFunction.Choose(WorksheetFunction.Weekday(Date, 11) _
, 0, 1, _
2, 3, 4, 5, 6), "00")
 birth_date = Format(DateSerial(Year(Date) - 30, Month(Date), sday), "yyyy-mm- _
dd") &   _
Format(DateSerial(Year(Date) - 18, Month(Date), sday), "yyyy-mm-dd")
url = "https://www.imdb.com/search/name/?birth_date=" & birth_date & gender=f........

Anzeige
AW: Nachtrag
13.11.2020 09:42:08
Christian
Hallo Ralf,
um dann die 30 Jahre abzuziehen, brauche ich dann doch wieder die Datumsformel.
Ich glaube dann bleibe ich Formelmäßig doch bei meiner Lösung.
An den VBA Code mache ich mich dann jetzt mal dran. Bin nicht so wahnsinnig fit in VBA und das muss in einen mehr als 200 Zeilen langen Code eingebaut werden. Kann also etwas dauern, melde mich dann aber.
Gruß
Christian
Anzeige
Ergebnis des Makrotests
13.11.2020 09:56:14
Christian
Hallo Uwe,
mit folgendem Codeschnipsel hat es geklappt.
 sday = Format(Day(Date) - WorksheetFunction.Choose(WorksheetFunction.Weekday(Date, 11), 0, 1,  _
2, 3, 4, 5, 6), "00")
birth_date = Format(DateSerial(Year(Date) - 30, Month(Date), sday), "yyyy-mm-dd") & "," &  _
Format(DateSerial(Year(Date) - 18, Month(Date), sday), "yyyy-mm-dd")
url = "https://www.imdb.com/search/name/?birth_date=" & birth_date & "gender=female&roles=" & ttNummer & "&has=birth-date&adult=include&sort=birth_date,asc&count=100&start=" & startListeAktuell
ich habe allerdings noch 2 Dinge ergänzen müssen, einmal das Komma zwischen den beiden Daten und die " vor gender
aber so hat es dann funktioniert.
Vielen Dank für die Geduld und die Mühe.
Christian
Anzeige
danke für die rückmeldung -owT
13.11.2020 18:08:33
ralf_b
AW: Ergebnis des Makrotests
16.11.2020 18:49:56
Christian
Hallo Ralf, bzw. auch die anderen,
es ist doch ein Problem aufgetreten.
Das Makro hätte Daten zwischen dem 16.11.1990 und dem 16.11.2002 berücksichtigen sollen.
Allerdings werden auch Daten nach dem 16.11.2002 übertragen also scheint irgendwas mit dem Code doch nicht zu stimmen.
Ein funktionierender Link, sieht z.B. so aus, wobei im Code mehrere Teile des Links durch Variablen ersetzt sind. Wie gesagt, das zweite Datum scheint in einer anderen Form ausgegeben zu werden und deshalb werden auch Daten nach dem 16.11.2002 berücksichtigt.
https://www.imdb.com/search/name/?birth_date=1990-11-16,2002-11-16&gender=female&roles=tt1877830&adult=include&sort=birth_date,asc&count=100&start=1
Hier der Code, wie er aktuell genutzt wird:

Dim sday As String, birth_date As String
sday = Format(Day(Date) - WorksheetFunction.Choose(WorksheetFunction. _
Weekday(Date, 11), 0, 1, 2, 3, 4, 5, 6), "00")
birth_date = Format(DateSerial(Year(Date) - 30, Month(Date), sday), "yyyy- _
mm-dd") & "," & Format(DateSerial(Year(Date) - 18, Month(Date), sday), "yyyy-mm-dd")
url = "https://www.imdb.com/search/name/?birth_date=" & birth_date & "gender=female&roles=" & ttNummer & "&has=birth-date&adult=include&sort=birth_date,asc&count=100&start=" & startListeAktuell
Wo liegt mein Fehler?
Danke nochmal Christian
Anzeige
Habe den Fehler denke ich gefunden
16.11.2020 18:59:50
Christian
vor gender hat das & gefehlt. Aber ob das alles war müssen jetzt noch ausgiebigere Tests zeigen.

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Datum des letzten Montags berechnen in Excel


Schritt-für-Schritt-Anleitung

Um das Datum des letzten Montags zu berechnen, kannst Du die folgende Formel verwenden:

=HEUTE()-WAHL(WOCHENTAG(HEUTE();11);0;1;2;3;4;5;6)

Diese Formel zieht die Anzahl der Tage vom aktuellen Datum ab, um auf den letzten Montag zu gelangen.

Falls Du das Datum des letzten Montags eines bestimmten Monats benötigst, kannst Du die Formel anpassen. Angenommen, Du möchtest den letzten Montag im aktuellen Monat:

=DATUM(JAHR(HEUTE());MONAT(HEUTE())+1;0)-WOCHENTAG(DATUM(JAHR(HEUTE());MONAT(HEUTE())+1;0);2)

Diese Formel gibt Dir das Datum des letzten Montags im aktuellen Monat zurück.


Häufige Fehler und Lösungen

  1. Falsches Datum angezeigt
    Wenn das Datum nicht korrekt ist, überprüfe, ob Du die richtige Methode zur Berechnung verwendest. Achte besonders auf die Parameter der WOCHENTAG-Funktion.

  2. VBA-Code funktioniert nicht
    Wenn Du einen VBA-Code verwendest und dieser nicht das erwartete Ergebnis liefert, beachte, dass die Datumsformatierung in VBA eventuell anders ist. Stelle sicher, dass die Variablen korrekt deklariert und formatiert sind.


Alternative Methoden

Eine weitere Methode, um den letzten Montag zu ermitteln, ist die Verwendung von DATUM in Kombination mit WOCHENTAG. Hier ist eine Beispielformel, die den letzten Montag des Jahres berechnet:

=DATUM(JAHR(HEUTE());12;31)-WOCHENTAG(DATUM(JAHR(HEUTE());12;31);2)+1

Diese Formel gibt Dir das Datum des letzten Montags im aktuellen Jahr zurück.


Praktische Beispiele

  1. Letzter Montag des Monats November 2023
    Verwende die folgende Formel:

    =DATUM(2023;11;1+TAG(DATUM(2023;12;1)-1)-WOCHENTAG(DATUM(2023;12;1)-1;2))

    Diese Formel berechnet den letzten Montag des Monats November 2023.

  2. Letzter Montag unter Berücksichtigung eines Schaltjahres
    Wenn der letzte Montag der 29. Februar ist, kannst Du die folgende Formel verwenden, um sicherzustellen, dass das Jahr korrekt berücksichtigt wird:

    =WENN(MONAT(HEUTE())=2;WENN(JAHR(HEUTE()) MOD 4=0;29;28);HEUTE()-WOCHENTAG(HEUTE();2))

Tipps für Profis

  • Nutze die Funktion WAHL: Diese Funktion kann in Kombination mit WOCHENTAG verwendet werden, um flexiblere Berechnungen durchzuführen.

  • VBA für komplexe Berechnungen: Wenn Du regelmäßig mit Datumsberechnungen arbeitest, kann es sinnvoll sein, einen VBA-Code zu schreiben, der Dir automatisierte Berechnungen bietet. Zum Beispiel:

    Dim sday As String
    sday = Format(Day(Date) - WorksheetFunction.Choose(WorksheetFunction.Weekday(Date, 11), 0, 1, 2, 3, 4, 5, 6), "00")
  • Teste Deine Formeln: Vergewissere Dich immer, dass Deine Formeln unter verschiedenen Bedingungen funktionieren, insbesondere an Monatsanfängen oder -enden.


FAQ: Häufige Fragen

1. Wie bekomme ich das Datum des letzten Montags eines bestimmten Jahres?
Du kannst die DATUM-Funktion zusammen mit WOCHENTAG verwenden, um den letzten Montag eines bestimmten Jahres zu berechnen.

2. Was passiert, wenn der letzte Montag auf ein Schaltjahr fällt?
Die Formeln berücksichtigen automatisch Schaltjahre, solange Du die korrekten Funktionen und Parameter verwendest. Achte jedoch darauf, dass Du die richtigen Bedingungen in Deinem VBA-Code implementierst, wenn Du diesen verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige