1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Kalenderwochen in Excel 2007

Discussion in 'Office-Programme' started by winniepoohsgft, Mar 23, 2012.

Thread Status:
Not open for further replies.
  1. Hallo zusammen,

    ich habe schon ganz viele Foreneinträge und Tipps gelesen, komme aber irgendwie nicht weiter....:confused:

    Mein Problem ist das Folgende:

    Ich habe eine Urlaubsliste und will jeweils über eine beginnende Woche die Kalenderwoche schreiben. In den restlichen Feldern soll die Zelle leer bleiben. Das klappt auch im "amerkianischen Format" - also mit sonntags beginnender Kalenderwoche, ohne Probleme. Hier die Formel dazu:

    =WENN(KALENDERWOCHE(E10;1)<>KALENDERWOCHE(F10);"KW "&KALENDERWOCHE(F10);"")

    E10 und F10 sind jeweils Felder mit dem jeweiligen Datum.

    Ich habe gelesen, dass man für "unsere" Kalenderwochen einfach nur das Argument "1" mit einer "2" austauschen muss. Wenn ich das mache, sind meine Felder aber alle leer.

    Ich bin etwas ratlos... Mit VBA kenne ich mich auch so gar nicht aus - konnte also mit den entsprechenden Kommentaren in manchen Threads nichts anfangen.

    Ich hoffe, mir kann hier schnell jemand helfen - wenn noch Informationen fehlen, reiche ich die natürlich gerne nach!

    Danke schon mal im Voraus!

    winniepoohsgft
     
  2. Urs2

    Urs2 Megabyte

    US = Kein Argument
    US = Argument 1
    EU = Argument 2

    Du musst schon bei allen drei KALENDERWOCHE(...) das gleiche Argument setzen...

    =WENN(KALENDERWOCHE(E$10;2)<>KALENDERWOCHE(F$10;2);"KW "&KALENDERWOCHE(F$10;2);"")

    ... dann funktioniert es.

    Gruss Urs
     
  3. Hascheff

    Hascheff Moderator

    Ob Argument 1 oder 2, es bleibt amerikanisch.

    Ich habe eine Weile getüftelt, jetzt denke ich, habe ich zwei Lösungen gefunden, die perfekt sind.

    Einfacher ist die erste Lösung, sie benötigt aber VBA. Ich habe dort eine Excel-Funktion erstellt, die auf der VBA-Funktion "format" basiert. Mit dem Parameter "ww" gibt sie die Kalenderwoche zurück. Nach dem Einfügen in VBA kannst du "format" anklicken und <F1> drücken, dann erfährst du mehr über die anderen Parameter. "format" liefert allerdings in den letzten Dezembertagen nicht immer die richtige KW. Deshalb wird die If-Konstruktion gebraucht.
    Code:
    Function KW(Zahl As Variant) As Integer
    If Month(Zahl) = 12 And Format(Zahl, "ww", 1, 2) = 1 Then
        KW = 53
      Else
        KW = Format(Zahl, "ww", 1, 2)
      End If
    End Function
    
    Füge den Code einfach in ein Modul im VBA-Editor ein. Wenn du noch keins hast, mach Rechtsklick auf "VBAProject".
    Danach kannst du in Excel einfach "=KW(A1)" als Formel schreiben. (Hier und im folgenden steht das Datum in Zelle A1.)

    Die zweite Lösung kommt ohne VBA aus.
    Code:
    =WENN(KALENDERWOCHE(A1)+1-KALENDERWOCHE(DATUM(JAHR(A1);1;4))=0;105-KALENDERWOCHE(DATUM(JAHR(A1)-1;12;27));KALENDERWOCHE(A1)+1-KALENDERWOCHE(DATUM(JAHR(A1);1;4)))
    Gewaltig, was?
    Nach europäischer Rechnung ist der 4.1. immer in der ersten Woche. Wenn die Funktion wegen der amerikanischen Berechnung 2 ergibt, muss korrigiert werden.Ob dann 52 oder 53 in den ersten Januartagen stehen muss, hängt davon ab, was KALENDERWOCHE für den 27.12. des Vorjahrs liefert.

    Viel Vergnügen!
     
  4. Urs2

    Urs2 Megabyte

    Hallo Hascheff

    Warten wir mal ab, wer den TO besser verstanden hatte...

    Das Problem mit dem unterschiedlichen Beginn der 1. Kalenderwoche im Jahr hat mit den Argumenten in KALENDERWOCHE(...) nichts zu tun.

    In VBA kann man die Konstanten VbFirstWeekOfYear und VbDayOfWeek verwenden.
    Dort kann man auch befehlen, die System-Einstellungen zu verwenden... scheint Excel selbst nicht zu tun...
    Der Beginn der Kalenderwoche kann dort auch auf jeden Wochentag gelegt werden... die Mohamedaner haben den "Sonntag" am Freitag, die Juden am Samstag und die xyz am ???


    Mir scheint, der TO hatte aber Probleme mit dem Beginn der normalen Kalenderwoche (Sonntag<>Montag) und da funktionieren die Argumente sehr wohl.

    Ich hatte auch schnell getestet (ich arbeite nie mit Kalenderwochen), darum sind in meinem Beitrag auch die $-Zeichen vor der Zeilennummer reingerutscht...

    Gruss Urs
    .
     

    Attached Files:

  5. Hascheff

    Hascheff Moderator

    Hallo Urs,
    wenn ich mir die Arbeit mache, das Problem zu Ende zu lösen, (Für meine Bedürfnisse hatte ich schon eine halbwegs befriedigende Lösung entwickelt.) dann denke ich auch an andere Hilfesuchende, die später den Thread finden.
    Ja, deshalb mein Hinweis auf die Hilfe.
    Stimmt. Ein Zeichen für schludrige Arbeit. System-Einstellung wäre zweimal die 0. Das klappte im Test auch.


    Gruß
    Hascheff
     
  6. Urs2

    Urs2 Megabyte

    @Hascheff
    Da der TO sein Problem offenbar alleine gelöst hatte >>>

    Ich mag nicht, wenn man meine Aussage so kategorisch vernichtet, nur weil man... den Kontext verwechselt hatte...
    ...und erst recht nicht, wenn man auf meine leise und höfliche Aufklärung mit bezugslosen Argumenten kontert.

    Gruss Urs
     
Thread Status:
Not open for further replies.

Share This Page