Excel/VBA Kalenderwoche?
Ich habe eine Exceltabelle in der B2:B92 Daten (Datum) stehen. In Spalte A hätte ich jetzt gerne die passende KW dazu stehen was auch kein Problem ist mit =KÜRZEN((B2-DATUM(JAHR(B2-REST(B2-2;7)+3);1;REST(B2-2;7)-9))/7)
Jetzt kommt das ABER:
da in Spalte B die Daten mehrfach vorkommen (sind auch nach Datum sortiert) hätte ich gerne das die KW immer nur beim ersten Wochentag (Montag) einmal angezeigt wird und auch erst wieder beim Nächsten Montag. Und sollte das Datum in der Vergangenheit liegen Soll nur einmal "Rückstand" statt KW angezeigt werden. Gerne auch VBA lösungen falls es nicht mit einer Excel Formel funktioniert.
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);"")))

habe die Formel verändert, sodass sie Deiner Darstellung Spalte A und Spalte B entspricht.
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));""))
... 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);""))
Da Du ein Datum öfters hast, musste die Formel noch eine Abfrage hinzugefügt werden um Wiederholungen auszuschließen
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