Anzeige
Archiv - Navigation
280to284
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
280to284
280to284
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Modulare Date-Funktion

Modulare Date-Funktion
16.07.2003 23:29:35
Gerhard Kopp
Hallo,
benötige eine modulare Funktion um folgendes Beispieldatum: 17.06.03, in folgendem Format in der Ursprungszelle auszugeben: 29.4/03. hierbei bedeuten: 29 = die Kalenderwoche; 4 = Wochentag, hier Donnerstag, sowie: /03 das Kalenderjahr. Die Kalenderwochen sollen nach Europ. Norm, sowie die KW 01 bis 09 des jeweiligen Jahres mit einer führender Null ausgegeben werden. "Zellen mit Datum markieren => Makro zum Formatieren ausführen!"
Im Vorraus vielen Dank für Hilfe!
Gerhard

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Modulare Date-Funktion
19.07.2003 18:08:28
Gerhard
Hallo Sigi, Hallo Steffan,
Sorry wegen der fehlebehafteten Beispielangabe.
War wohl schon zu spät!
Danke für die Hilfe; FUNKTION- niert alles wie gewünscht!
Gerhard

AW: Modulare Date-Funktion
17.07.2003 01:09:58
Steffan
Hallo Gerhard,
wenn man mal davon absieht, dass der 17.06.03 ein Dienstag war und (zumindest nach meinem Kalender) in der 25. Woche lag, kannst Du mit folgendem Code das Problem lösen (gehört in den Codebereich des Tabellenblattes, in dem Du die Funktion benötigst):

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim yr, wd, wk, mon1
On Error GoTo exit_
If IsDate(Target.Value) = True Then
yr = Year(Target.Value)
wd = Weekday(Target.Value, vbMonday)
mon1 = DateSerial(yr, 1, 9 - Weekday(DateSerial(yr, 1, 1), vbMonday))
wk = Int(((Target.Value) - mon1) / 7) + 2
Target.Value = Format(wk, "00") & "." & Format(wd, "0") & "/" & Right(yr, 2)
End If
exit_:
End Sub

Steffan.

Anzeige
AW: Modulare Date-Funktion
17.07.2003 01:03:30
Sigi E.
Hallo Gerhard,
es ist nicht etwas seltsam die Kalenderwoche in die Ursprungszelle auszugeben???
Aber wenn's so sein soll ...

Private Sub Worksheet_Change(ByVal Target As Range)
If IsDate(Target) Then
Application.EnableEvents = False
Target.Value = KW_Spezial(Target.Value)
Application.EnableEvents = True
End If
End Sub


Private Function KW_Spezial(Datum As Date) As String
Dim KW As Long
Dim Jahr As Long
Dim WoTag As Long
Dim Wert As Double
Wert = DateSerial(Year(Datum + (8 - Weekday(Datum)) Mod 7 - 3), 1, 1)
KW = (Datum - Wert - 3 + (Weekday(Wert) + 1) Mod 7) \ 7 + 1
WoTag = Weekday(Datum, vbMonday)
Jahr = Year(Datum)
If Month(Datum) = 1 And KW > 51 Then
Jahr = Jahr - 1
ElseIf Month(Datum) = 12 And KW < 2 Then
Jahr = Jahr + 1
End If
KW_Spezial = Format(KW, "00") & "." & WoTag & "/" & Right(CStr(Jahr), 2)
End Function

Gruß
Sigi

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige