Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1228to1232
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

datum per Makro

datum per Makro
Chris
Hallo,
Wie kann ich per Makro für eine Arbeitswoche von Montag bis Samstag das Datum nur dieser Beiden Tage anzeigen lassen? Also für den kommenden Montag: 19.9.2011 - 24.9.11, dann bei Klick 26.9.-01.10
Die Aktualisierung per Klick sollte jeder Zeit möglich sein.
Hat da jmd einen Vorschlag?
Danke schon mal

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: datum per Makro
15.09.2011 18:31:00
Martin
Hi
Public plus7 As Long

Private Sub CommandButton1_Click()
Dim Mo As Date
Mo = Date + plus7 + Abs((((1 + (Date + plus7 - 2) Mod 7)) > 1) * 7) - ((Date + plus7 - 2) Mod 7) _
[a1] = Format(Mo, "dd/mm") & "-" & Format(Mo + 5, "dd/mm")
plus7 = plus7 + 7
End Sub

https://www.herber.de/bbs/user/76639.xls
so?
chris
AW: datum per Makro
15.09.2011 21:37:13
Chris
Hi Martin,
ja, genau so :-) Kannst du mir den Gefallen tun und mir die Formel einmal genau (!) erklären.
...bahnhof... :-)
Danke,
Chris
mal als Formel
16.09.2011 09:58:24
Erich
Hi Chris,
die Formel für "Mo" verstehe ich auch nicht wirklich. Ich habs mal - für plus7 = 0 - in Excel aufgeschrieben:
 ABCDE
1Fr  16.09.11Mo  19.09.11Mo  19.09.11Mo  19.09.11Mo  19.09.11
2Sa  17.09.11Mo  19.09.11Mo  19.09.11Mo  19.09.11Mo  19.09.11
3So  18.09.11Mo  19.09.11Mo  19.09.11Mo  19.09.11Mo  19.09.11
4Mo  19.09.11Mo  26.09.11Mo  19.09.11Mo  19.09.11Mo  19.09.11
5Di  20.09.11Mo  26.09.11Mo  26.09.11Mo  26.09.11Mo  26.09.11
6Mi  21.09.11Mo  26.09.11Mo  26.09.11Mo  26.09.11Mo  26.09.11
7Do  22.09.11Mo  26.09.11Mo  26.09.11Mo  26.09.11Mo  26.09.11
8Fr  23.09.11Mo  26.09.11Mo  26.09.11Mo  26.09.11Mo  26.09.11
9Sa  24.09.11Mo  26.09.11Mo  26.09.11Mo  26.09.11Mo  26.09.11
10So  25.09.11Mo  26.09.11Mo  26.09.11Mo  26.09.11Mo  26.09.11
11Mo  26.09.11Mo  03.10.11Mo  26.09.11Mo  26.09.11Mo  26.09.11
12Di  27.09.11Mo  03.10.11Mo  03.10.11Mo  03.10.11Mo  03.10.11

Formeln der Tabelle
ZelleFormel
B1=A1+7-REST(A1-2;7)
C1=A1+6-REST(A1-3;7)
D1=A1 + ABS(((1+REST(A1-2;7))>1)*7) - REST(A1-2;7)
E1=A1 + ((1+REST(A1-2;7))>1)*7 - REST(A1-2;7)

Spalte A: Ausgangsdatum (statt HEUTE())
Spalte B: Kurzform - mit anderen Ergebnissen in den Zeilen 4 und 11.
Spalte C: Kurzform - Ergebnisse wie in den Spalten D und E
Spalte D: Formel von Martin/Chris
Spalte E: Formel von Martin/Chris, etwas gekürzt, ohne ABS()
Welchen Sinn hat das ABS() in der Formel?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: mal als Formel
16.09.2011 10:32:03
mäxl
Hallo
Das ABS war für mich auch nicht logisch!
((Date - 2) Mod 7) > 0)
noch mal gekürzt.... war wohl gestern auch mit dem ABS zu lange beschäftigt
ergibt ja nur True oder False
ich ging davon aus das True immer +1 sein sollte...
nur ab und zu war bei der Multiplikation von 7 auf einem der Wert -7 (minus) enthalten?
darum das ABS um den VBA Code zu zwingen TRUE als pos. anzusehen.
soviel zum ABS
Datum mod 7 ergibt eine Zahl von 0 bis 6 wobei 0 der Samstag wäre, 1 der Sonntag, Montag 2, usw.
=der Rest einer Ganzzahldivision
Darum habe ich (Datum-2) mod 7 genommen um auf den Rest 0 für Montag zu bekommen.
Es würde auch folgendes reichen wenn immer der „nächste“ Montag benötigt wird
[a1] = Date + 7 - (Date - 2) Mod 7
Nur wäre das Datum ein Montag würde auch der nächste Montag genommen werden da der Rest 0 ist.
Soll der Montag der Montag bleiben und nicht der Nächste genommen werden. Ist das noch eingebaut.(True, False)
((Date - 2) Mod 7) > 0)
Date + ((Date - 2) Mod 7) > 0)*7 - (Date - 2) Mod 7
Ist Rest 0 dann soll sich der Montag nicht um eine Woche verschieben.
Das war für mich ja noch logisch, aber es sind falsche Daten rausgekommen….
Bis ich dann das ABS noch miteingebaut habe.
Gruß
p.s als Excelformel ginge es noch kürzer (das was ich in VBA gemacht habe)
=A1+(REST(A1-2;7)>0)*7-REST(A1-2;7)
nur das ist noch besser!! (deine Spalte C)
A1+6-REST(A1-3;7)
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige