Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1160to1164
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
Inhaltsverzeichnis

Kalendertage umwandeln

Kalendertage umwandeln
Knatterkopf
Hallo liebe Helfer,
ich habe folgendes vor:
In der Firma endet und startet der Monat etwas verschoben.
Der Monat Januar startet normal am 1. Januar und geht bis zum ersten Freitag im Folgemonat.
Am ersten Samstag darauf startet der Folgemonat, also der Februar und geht bis zum ersten Freitag im märz. Immer so weiter, nur der Dezember endet wieder normal am 31.12
Habe mir folgendes überlegt, nur leider funktioniert es noch nicht so ganz mit dem Datum:
Er schreibt mir wilde Monate & Jahreszahlen anstatt den Vormonat an die richtige Stelle.
Mit den Stellen passt es soweit denke ich.
Dim TagAnf As Date, TagEnde As Date, Datenblatt As Worksheet
Dim i As Long, Nr As Integer, Pos As Long, Tag As String, Tag2 As Double, Monat As String, Monat2 As Double, Sprung As String, Sprungtag As Integer
Dim zähler As Integer
Set Datenblatt = Worksheets("tabelle1")
With Datenblatt
i = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
For Pos = 1 To i
Tag = Format(Cells(Pos, 1).Value, "dddd")
Tag2 = Format(Cells(Pos, 1).Value, "dd")
Monat = Format(Cells(Pos, 1).Value, "mmmm, yyyy")
Monat2 = Format(Cells(Pos, 1).Value, "mm")
For Nr = 1 To 7
If Tag = "Freitag" And Tag2 = Nr And Not Monat = "Januar" Then
Monat2 = Monat2 - 1
Sprung = "Yes"
Sprungtag = Nr
Exit For
Else
Sprung = "No"
End If
Next
If Sprung = "Yes" Then
Nr = Sprungtag - 1
For zähler = 1 To Nr
Cells(Pos - zähler, 2) = Format(Monat2, "mmmm, yyyy")
Next
Else
Cells(Pos, 2) = Monat
End If
Next
End Sub
Wäre super wenn mir da jmd. Licht ins Dunkel bringen kann =)
Lg
Adrian

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Kalendertage zu Spezialmonaten
21.06.2010 10:09:12
Erich
Hi Adrian,
tut es das hier auch?

Sub abc()
Dim i As Long
' Formel: =A1-REST(A1-6;7)
With Worksheets("tabelle1")
For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(i, 2) = Format(.Cells(i, 1) - (Cells(i, 1) - 6) Mod 7, "mmmm, yyyy")
Next
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Kalendertage zu Spezialmonaten
21.06.2010 11:00:52
Knatterkopf
Hi, ja es funktioniert!
Nur immer einen Tag zu früh endend. Also ein Tag im Folge Monat muss noch dazu. Sprich der Freitag gehört noch dazu.
Wäre lieb, wenn du mir noch kurz dieses kleiner Wunder erklären magst =)
Lg
Anzeige
Kalendertage zu Spezialmonaten - korrigiert
21.06.2010 10:59:56
Erich
Hi Adrian,
sorry, in dem kurzen Code hatte ich die Spezialität für den Januar vergessen.
Hier die neue Version:

Sub abb()
Dim zz As Long, datD As Date
With Worksheets("tabelle1")
For zz = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
datD = .Cells(zz, 1)
If Month(datD) > 1 Then datD = datD - (datD + 1) Mod 7
.Cells(zz, 3) = Format(datD, "mmmm, yyyy")
Next
End With
End Sub
Nebenbei habe ich die 'Formel' gerinfügig geändert zu =A1-REST(A1+1;7)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Kalendertage zu Spezialmonaten - korrigiert
21.06.2010 11:19:51
Knatterkopf
Hi, ich bins es nochmal.
Also der Code ist ja mal genial!!
Ich versteh nicht was hier "datD - (datD + 1) Mod 7"
so ganz vor sich geht, aber es ist auf jeden Fall sehr kompakt =)
Vor allem, wo kommt das "Mod7" her? Ist bestimmt die Formel, aber wie wird darauf verwiesen und wo steht diese?
Wäre toll wenn du es mir erklären kannst!
Ich hoffe es ist nicht zu hoch für mich =)
Lg
Adrian
Anzeige
nun mit Samstag
21.06.2010 11:32:36
Erich
Hi Adrian,
ich hatte die Aufgabenstellung nicht genau genug gelesen.
Hier gehört jetzt der Freitag vor dem 1. Samstag noch zum Vormonat:

Sub abb()
Dim zz As Long, datD As Date
' Formel ab Februar: A1-REST(A1;7)
With Worksheets("tabelle1")
For zz = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
datD = .Cells(zz, 1)
If Month(datD) > 1 Then datD = datD - datD Mod 7
.Cells(zz, 3) = Format(datD, "mmmm, yyyy")
Next
End With
End Sub
datD Mod 7 ist nichts anderes als die Funktion REST(A1;7).
Wenn du den Cursor im Code in das Wort "Mod" stellst und F1 drückst,
bekommst du die VBA-Hilfe zu Mod. Da gibt es auch ein paar Beispiele.
Wenn du danach Fragen hast - melde dich!
Vielleicht wird es auch etwas besser verständlich, wenn du das mal ohne VBA mit Excelformeln abbildest.
A1-Rest(A1;7) ist ein Datum, da kannst du mit Format TTT TT.MM.JJ auch den Wochentag anzeigen lassen.
Hilfreich sind vielleicht auch die Seiten
http://www.excelformeln.de/formeln.html?welcher=187
http://www.excelformeln.de/formeln.html?welcher=372
http://www.online-excel.de/fom/fo_read.php?f=1&bzh=49139&h=49114
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: nun mit Samstag
21.06.2010 11:37:03
Knatterkopf
HI,
vielen lieben Dank =))
Ich werds mir mal zu gemüte tun und wenn ich Fragen hab melde ich mich!
Lg
Adrian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige