Microsoft Excel

Herbers Excel/VBA-Archiv

Makro für deutsche Kalenderwochen

Betrifft: Makro für deutsche Kalenderwochen von: Devil_In_I
Geschrieben am: 20.10.2014 14:21:27

Habe versucht in Excel eine Tabelle herzustellen, die Datums in deutsche Kalenderwochen umwandeln soll. Sobald das Datum eingetragen war, sollte die Kalenderwoche automatisch angegeben und berechnet werden.
Ich habe mich mit den Makros versucht, allerdings kam irgendein Fehler bei der Definition von 'dat'.

Sub kalenderwoche()
Dim a As Integer, dat As Date
For r = 1 To 365
dat = Cells(r, 1)
a = Int((dat - DateSerial(Year(dat), 1, 1) + _
((WeekDay(DateSerial(Year(dat), 1, 1)) + 1) Mod 7) - 3) / 7) + 1
If a = 0 Then
a = DateSerial(Year(dat) - 1, 12, 31)
ElseIf a = 53 And (WeekDay(DateSerial(Year(dat), 12, 31)) - 1) Mod 7 <= 3 Then
a = 1
End If
If Format(Cells(r, 1), "dddd") = "Montag" Then Cells(r, 2) = "KW " & a
Next r
End Sub
In Spalte A ist das Datum und in B soll die Kalenderwoche eingetragen werden.
Bitte helft mir & bringt wenn es geht bitte ein neues sinnvolleres Makro (:

  

Betrifft: ohne Makro AW: Makro für deutsche Kalenderwochen von: Klaus M.vdT.
Geschrieben am: 20.10.2014 14:28:57

Hallo Devil (hier im Forum benutzen wir gerne richtige Vornamen),

mach das doch einfach per Formel, wozu VBA? Ab xl2007 geht folgende Formel:
=KALENDERWOCHE(A1;21)
der Schalter ;21 sorgt dafür, dass die richtige deutsche Kalenderwoche gewählt wird und nicht die amerikanische.
Um das ganze auf "Montage" zu trimmen wie in deinem Makro, einfach ein "WENN" drum herum:
=WENN(TEXT(A1;"TTTT")="Montag";"KW "&KALENDERWOCHE(A1;21);"")

Dein Makro läuft bei mir übrigens anstandslos durch. Windows 7, xl2010.

Grüße,
Klaus M.vdT.
(ein abschließender Gruß lässt den Beitrag viel freundlicher wirken)


  

Betrifft: ohne Makro AW: Makro für deutsche Kalenderwochen von: Daniel
Geschrieben am: 20.10.2014 14:44:11

HI Klaus
der Kollege hat Excel XP!
da gibts nur die amerikanische Kalernderwoche im Standard-Funktionsumfang.
und der Datentyp Date ist, wenn mich meine Erinnerung nicht täuscht, auch neu.
Das ist sowieso ein etwas komischer Datentyp.
Gruß Daniel


  

Betrifft: ohne Makro AW: Makro für deutsche Kalenderwochen von: Devil_In_I
Geschrieben am: 20.10.2014 14:47:21

Seltsamerweise kommt dort als Antwort 'Wahr' heraus.
Woran könnte das liegen? Ich habe die Zellen als Zahlen formatiert.

Freundliche Grüße von dem Teufel


  

Betrifft: @laus: Ab xl2007 geht folgende Formel von: Rudi Maintaire
Geschrieben am: 20.10.2014 15:38:35

Hallo,
nö.
Erst ab 2010.

Gruß
Rudi


  

Betrifft: AW: @laus: Ab xl2007 geht folgende Formel von: Klaus M.vdT.
Geschrieben am: 20.10.2014 16:20:50

Hallo udi,

Glaube ich dir. Bin von 2003 auf 2010 umgestiegen und dachte, alle "neuen" Formeln gibt es seit 2007. Hab ich mich wohl geirrt.

Hallo Namenloser Themenersteller,
folgende Formel sollte funktionieren:
=WENN(TEXT(A1;"TTTT")="Montag";"KW " & KÜRZEN((A1-DATUM(JAHR(A1+3-REST(A1-2;7));1;REST(A1-2;7)-9))/7) ;"")

Die Formel für die deutsche Kalenderwoche vor Excel 2010 stammt nicht von mir, sondern von
http://www.excelformeln.de/formeln.html?welcher=7

Grüße,
Klaus M.vdT.


  

Betrifft: AW: Makro für deutsche Kalenderwochen von: Daniel
Geschrieben am: 20.10.2014 14:41:32

Hi
probier mal: dat as Long
in der Excelzelle ist ein Datum immer noch eine einfache Ganzahl, welche seit dem 1.1.1900 jeden Tag um 1 hochgezählt wird.

Gruß Daniel


  

Betrifft: AW: Makro für deutsche Kalenderwochen von: Devil_In_I
Geschrieben am: 20.10.2014 15:07:42

Danke für den Tipp (:
Aber es wird immer noch der Fehler bei 'dat = cells (r, 1) dass die Typen unverträglich sind.
Kann es was mit dem Betriebssystem zu tun haben?
Wohin soll der Code eingespeichert werden? In Tabelle 1 oder ins Modul?

Grüße zurück


  

Betrifft: AW: Makro für deutsche Kalenderwochen von: Daniel
Geschrieben am: 20.10.2014 15:15:50

was steht den in der Zelle drin wenn der Fehler auftritt?

gib mal, wenn das Makro mit dem Fehler stoppt, im Direktfenster den Befehl ein:
?Cells(r, 1).Value, Cells(r, 1).Text, Cells(r, 1).Formula
und zeige und die 3 ausgegebenen Werte.

Gruß Daniel


  

Betrifft: AW: Makro für deutsche Kalenderwochen von: Devil_In_I
Geschrieben am: 20.10.2014 15:26:37

Es kommt unten drunter 3x 'Datum'. Aber ansonsten nichts.

Gruß zurück


  

Betrifft: AW: Makro für deutsche Kalenderwochen von: Daniel
Geschrieben am: 20.10.2014 15:35:55

Hi
naja, das ist ein TEXT und von einem Text kannst du keine Kalenderwoche berechnen.
da musst entweder eine Prüfung einbauen, dass in der umzuwandelnden Zelle auch tatsächlich ein Datum oder zumindest eine Zahl steht, oder dafür sorgen, dass die Schleife nur über Zellen mit Zahlen läuft.

deine Datumwerte beginnen erst ab Zeile 2 und und in der Zeile 1 steht noch die Überschrift!
deswegen:
For r = 2 To 366

Gruß Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "Makro für deutsche Kalenderwochen"