Kalenderwoche für mehrere jahre vorberechnen mit VBA
hmm
- excel
- microsoft
Hi Leute,
ich brauche eine Visual Basic Funktion die folgendes macht:
Die funktiuon bekommt ein Datum ca. 02.03.2016
die funktion bekommt außerdem eine Zahl, z.B. 120
Die Funktion soll mir alle Kalenderwochen ausgeben beginnend mit der Kalenderwoche vom 02.03.2016 Das Problem bei
for i = 0 bis 120 do KALENDERWOCHE(02.03.2016) + i
ist, dass ab der Kalenderwoche 52 bzw 53 einfach mit 54 weitergezählt wird, d.h. es wird nicht ab dem 01.01.2017 mit KW1 gerechnet sondern mit KW53 bzw KW54
habt ihr eine Funktion die sich für meine zwecke eignet? hat Excel nicht irgendwo sowas rumliegen?
hi,
ist, dass ab der Kalenderwoche 52 bzw 53 einfach mit 54 weitergezählt wird, d.h. es wird nicht ab dem 01.01.2017 mit KW1 gerechnet sondern mit KW53 bzw KW54
Ein Jahr hat entweder 52 oder 53 Kalenderwochen je nachdem an welchem Tag es beginnt. Und der 1.1.2017 ist nicht KW1 sondern KW52/2016; dafür gibts Regeln ebenda.
MfG
Tach!
Die Funktion soll mir alle Kalenderwochen ausgeben beginnend mit der Kalenderwoche vom 02.03.2016 Das Problem bei
for i = 0 bis 120 do KALENDERWOCHE(02.03.2016) + i
ist, dass ab der Kalenderwoche 52 bzw 53 einfach mit 54 weitergezählt wird, d.h. es wird nicht ab dem 01.01.2017 mit KW1 gerechnet sondern mit KW53 bzw KW54
Da die Kalenderwoche nicht an einem bestimmten Datum sondern einer nicht ganz so einfachen Wochentagskonstellation umschaltet, lässt sich das nicht einfach weiterzählen und dann mit 1 weitermachen. Stattdessen würde ich jeweils 7 Tage dazuzählen und von dem Datum die Kalenderwochennummer ermitteln lassen.
dedlfix.
danke, kann ich davon ausgehen das die Methode mit 7 tage hochzählen fehlerfrei ist?
Tach!
kann ich davon ausgehen das die Methode mit 7 tage hochzählen fehlerfrei ist?
Davon gehe ich aus. Zeitwerte werden intern als Anzahl der Tage seit einem bestimmten Anfangsdatum abgelegt (die Uhrzeit dazu als Bruchteile von Tagen). Das Addieren von Tagen ist somit problemlos möglich. Für das Ermitteln von Wochentagen und anderem gibt es Funktionen oder Formeln. Beides ist recht einfach zu finden.
dedlfix.
Hallo und guten Tag,
danke, kann ich davon ausgehen das die Methode mit 7 tage hochzählen fehlerfrei ist?
kommt darauf an, was die Politik entscheidet -> Beispiel
Grüße
TS
@@hmm
ich brauche eine Visual Basic Funktion die folgendes macht:
Wieso Visual Basic? Deine Frage hast du doch mit „Excel“ getaggt‽
habt ihr eine Funktion die sich für meine zwecke eignet? hat Excel nicht irgendwo sowas rumliegen?
Du suchst die Excel-Funktion KALENDERWOCHE?
Wenn ja, warum suchst du nicht danach?
LLAP 🖖
hm, ich schreibe ein Excel makro in visual Basic, den vba tag hab ich nicht gefunden
Kalenderwoche benutze ich derzeit (mittels vba dynamisch in excel-zellen mit + 1 kopiert), dadurch kommt des zu dem oben beschrieben Problem.
das ist ziemlich kompliziert, ich hoffe dass ich das mit den plus 7 tagen so umsetzen kann das es fehlerfrei funktioniert
@@hmm
Kalenderwoche benutze ich derzeit
Ah ja, das schriebst du ja.
(mittels vba dynamisch in excel-zellen mit + 1 kopiert), dadurch kommt des zu dem oben beschrieben Problem.
das ist ziemlich kompliziert, ich hoffe dass ich das mit den plus 7 tagen so umsetzen kann das es fehlerfrei funktioniert
Das i muss mit in die Klammer, mit 7 multipliziert, wie dedlfix schon schrieb. Sowas wie (ungetestet):
for i = 0 bis 120 do KALENDERWOCHE(02.03.2016 + i * 7)
LLAP 🖖
danke
=KALENDERWOCHE($B$1 + i*7;21)
das scheint zu funktionieren
Hallo und guten Tag,
nur Pech, wenn Dir sowas widerfäht ;-P
Grüße
TS
Wenn das Jahr wechselt und die erste Woche (Mo-So) des neuen Jahres nur drei (oder weniger) von sieben Tagen hätte, wird die alte Wochen-Nummer genommen.
Hat sie vier (oder mehr) von sieben Tagen, bekommt sie die Wochen-Nummer = 1.
Oder anders: Fällt der 1. Jan auf einen Fr, Sa oder So, ist er noch in der alten Wochen-Nummer, sonst in Woche 1.
Linuchs
schön
beim zufügen von:
iBlatt.Cells(zeile, 1) = "KALENDERWOCHE($B$1 +" & iterKw & "*7;21)"
und manuellem zufügen von = geht alles
aber bei
iBlatt.Cells(zeile, 1) = "=KALENDERWOCHE($B$1 +" & iterKw & "*7;21)"
bekomme ich Laufzeitfehler, warum?
das hier funktioniert:
iBlatt.Cells(zeile, 1).Select
ActiveCell.FormulaR1C1 = "=WEEKNUM(R1C2 +" & iterKw & "*7,21)"
PS: ich mag vba nicht
MsgBox DatePart("ww", #11/30/2009#)
http://www.vba-wissen.de/zeit.html
google: vba zeitfunktionen