Excel/VBA Kalenderwoche?

3 Antworten

Warum machst du es dir eigentlich mit der Kalenderwoche so kompliziert? Es gibt eine integrierte Funktion für die Kalenderwoche: =KALENDERWOCHE(B2;21)

(Die 21 bedeutet "System 2" (Woche mit erstem Donnerstag im Jahr ist die erste Woche des Jahres) mit Montag als erstem Tag in der Woche)

Soll das "Rückstand" bei jedem Montag erscheinen oder nur insgesamt einmal für alle zurückliegenden Tage?

"Rückstand" jeden Montag (für mehr Übersichtlichkeit formatiert. Kann auch alles in eine Zeile):

=WENN(
    WOCHENTAG(B2)=2;
    WENN(
        B2<HEUTE();
        "Rückstand"; 
        KALENDERWOCHE(B2;21)
    );
    ""
)

"Rückstand" insgesamt einmal:

Zeile 2:

=WENN(
   B3<HEUTE();
   "Rückstand"; 
   WENN(
       WOCHENTAG(B3)=2;
       KALENDERWOCHE(B3;21);
       ""
   )
)

Ab Zeile 3:

=WENN(
   B3<HEUTE();
   ""; 
   WENN(
       WOCHENTAG(B3)=2;
       KALENDERWOCHE(B3;21);
       ""
   )
)

Wenn du ein WENN drumrum machst, sollte das gehen... ggf. mit bedingter Formatierung, indem du die Textfarbe gleich der Hintergrundfarbe setzt... Zum Beispiel wenn Inhalt identisch mit Inhalt von Zelle drüber, dann weißer Text auf weißem Grund.

Gibt mehrere Ansätze, wie sich das lösen ließe, mutmaßlich auch ohne VB.

Wenn du nicht weiterkommst, lade mal eine Beispiel-XLS hoch, dann können wir mal rumpielen, was praktikabel und performant ist.

ohne VBA z.B. so

=WENN(B3=B2;"";WENN(UND(WOCHENTAG(B3)=2;B3<HEUTE());"Rückstand";WENN(WOCHENTAG(B3)=2;"KW "&KALENDERWOCHE(+B3);"")))

Bild zum Beitrag

 - (Computer, programmieren, Microsoft Excel)
jerora98 
Fragesteller
 02.09.2022, 09:52

Hi, so ähnlich hatte ich es mir vorgestellt hier mal noch ein Beispiel von meiner Datei:

https://docs.google.com/spreadsheets/d/12mtw1k8SgdimMazxUX-HIV7gKm6nUOZn/edit?usp=drivesdk&ouid=113658854744855602340&rtpof=true&sd=true

0
GutenTag2003  02.09.2022, 09:54
@jerora98

habe die Formel verändert, sodass sie Deiner Darstellung Spalte A und Spalte B entspricht.

1
GutenTag2003  02.09.2022, 09:57
@GutenTag2003

Um "KW" vor der Kalenderwoche in´der Spalte A anzuzeigen...

=WENN(UND(WOCHENTAG(B2)=1;B2<HEUTE());"Rückstand";WENN(WOCHENTAG(B2)=1;WENN(KALENDERWOCHE(B2)=KALENDERWOCHE(+B1);"";"KW "&KALENDERWOCHE(+B2));""))

1
GutenTag2003  02.09.2022, 10:21
@GutenTag2003

... und auf den jeweiligen Montag angepasst (sorry) ... und verkürzt

=WENN(UND(WOCHENTAG(B1)=2;B1<HEUTE());"Rückstand";WENN(WOCHENTAG(B1)=2;"KW "&KALENDERWOCHE(+B1);""))

0
GutenTag2003  03.09.2022, 14:27
@GutenTag2003

Da Du ein Datum öfters hast, musste die Formel noch eine Abfrage hinzugefügt werden um Wiederholungen auszuschließen

0