Anzeige
Archiv - Navigation
1648to1652
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

Monatswochen

Monatswochen
06.10.2018 20:44:32
Toni
Hallo alle miteinander,
ich suche gerade nach einer Möglichkeit jeden xten z.b. Montag via VBA in einen Kalender (eine Zeile: hintereinander weg) einzutragen. Gemeint sind nicht Kalenderwochen sondern Monatswochen [1-4].
Also beispiel die ersten beiden Mittwoche jeden Monats eines Jahres. Geht sowas überhaupt? Bei meiner Recherche bin ich da eher auf Resignation gestoßen ^^
Danke für Antworten!
Grüße, Toni

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
erstmal generelle Antwort: Ja das geht ...
06.10.2018 21:58:49
Matthias
Hallo
Beispiel-Lese-Stoff:
https://msdn.microsoft.com/de-de/library/bb979153.aspx
Bei meiner Recherche bin ich da eher auf Resignation gestoßen
Dann suchst Du sicher nach den falschen Begriffen
Gruß Matthias
AW: Monatswochen
06.10.2018 22:28:48
Toni
Hallo Ihr Beiden,
da sollte doch was dabei sein *freu. Ich werde es morgen gleich in meinen Code versuchen einzubauen.
Vielen Dank für die Antworten!!
gN8
Anzeige
Danke, die Funktion kommt in die Truhe :)
07.10.2018 10:24:26
Toni
Hi Onur,
.. in die Schatztruhe! In der Tabelle ist sie auf jeden Fall eine echte Erleichterung. Ich sehe schon zig Einsatzmöglichkeiten ..
Verpackt in eine VBA-Schleife läufts glaube ich gegen ByRef-Fehler sobald man das Innenleben der Funktion dynamisiert - ich kann mich aber auch täuschen. Ich häng unten gleich mal eine Datei ein, dann wird vielleicht deutlicher was ich meine.
auf jeden Fall hab wieder riesen Dänker für Deine Antwort!
Toni
AW: Danke, die Funktion kommt in die Truhe :)
07.10.2018 10:38:50
onur
Hi Toni,
Sie ist auch nicht dafür konzipiert, aus einem Code heraus aufgerufen zu werden.
Sie nimmt Bezug auf den Wert der Zelle darüber, damit man sie einfach herunterkopieren kann.
Man könnte (sollte) auch noch Application.Volatile als erste Zeile hinzufügen.
Gruß
Onur
Anzeige
.. gut zu wissen, Thx Onur! owT
07.10.2018 10:43:43
Toni
als Formel (Formeln gehen auch in VBA!)
07.10.2018 08:22:26
lupo1
Setze einen beliebigen Wochentag (z.B. Di) durch ein beliebiges Anfangsdatum fest. Dann pro Monat in Folge:
=MIN(WENN(TAG(A1+{1.2.3.4}*7-00)<15;A1+{1.2.3.4}*7)) nur die ersten beiden (Di)
=MIN(WENN(TAG(A1+{1.2.3.4}*7-14)<15;A1+{1.2.3.4}*7)) nur 3. und 4. (Di)
=MIN(WENN(TAG(A1+{1.2.3.4}*7-07)<15;A1+{1.2.3.4}*7)) nur 2. und 3. (Di)
=MIN(WENN(TAG(A1+{1.2.3.4}*7-00)>07;A1+{1.2.3.4}*7)) alle ohne den 1. (Di)
=MIN(WENN(TAG(A1+{1.2.3.4}*7-07)<22;A1+{1.2.3.4}*7)) keine 1. und 5. (Di)
=MIN(WENN(TAG(A1+{1.2.3.4}*7-07)>21;A1+{1.2.3.4}*7)) nur 1. und 5. (Di)
=MIN(WENN(ISTGERADE(KÜRZEN((TAG(A1+{1.2.3.4}*7)+6)/7));A1+{1.2.3.4}*7)) 2. und 4. (Di)
=MIN(WENN(ISTGERADE(KÜRZEN((TAG(A1+{1.2.3.4}*7)-1)/7));A1+{1.2.3.4}*7)) 1., 3. und 5. (Di)
Anzeige
AW: als Formel (Formeln gehen auch in VBA!)
07.10.2018 10:51:46
Toni
Hi Lupo,
erstens such ich mir seit Tagen nen Wolf, wie die Lösungen mit geschweifter Klammer innerhalb Zellformel syntaxtechnisch nochmal aussahen, ganz generell - und dann bekomme ich dafür die Lösung auf einem ganz anderen Tablett serviert :)) und
2. liebe ich diese Art Formeln, weil sparsam und mit wenig Impact auf die Performance (im Vergleich zu ...)
Ich werde später noch prüfen, ob ich das vielleicht doch irgendwie in den Code kriege,falls nicht, trotzdem großer Mehrwert!!
Danke vielmals
Gruß Toni
Die Klammern sind auf {1.2.3.4.5} zu erweitern,
07.10.2018 13:24:07
lupo1
damit Einzelergebnisse wie
"Nur das 1. Auftreten im Monat" möglich werden, und können dann immer noch keine isolierten Ergebnisse für
"Nur das 5. Auftreten im Monat" lösen.
Dafür braucht es dann {1.2...17} oder
{=MIN(WENN(TAG(A1+ZEILE($1:$17)*7)&gt28;A1+ZEILE($1:$17)*7)) } mit Nr. 5
Anzeige
AW: Die Klammern sind auf {1.2.3.4.5} zu erweitern,
07.10.2018 14:28:53
Toni
jeden 1. wäre demnach:
=MIN(WENN(TAG(A11+{1.2.3.4.5}*7-0)<8;A11+{1.2.3.4.5}*7))
bei der M-Fml liefert er die letzten WTs im 1.Quartalsmonat.
ganz lieben Dank für diese Lehrstunde! Ich habe eben noch verstanden, wie über die Min-Wenn-Kombination die Wahl aus der geschweiften Klammer getroffen wird. Bei mir dauert sowas. Ich hoffe nur,dass mir das auch außerhalb dieses Threats wieder einfällt ^^.
Grüße
Toni
Nein. Ich habe doch beschrieben, wofür die ...
08.10.2018 00:44:26
lupo1
... Formel ... (ZEILE(1:17) ... ist:
Zur Ermittlung nur der 5. Auftreten eines Wochentags in einem BELIEBIGEN Monat.
Eine EXPLIZITE Matrixformel ist es nur deshalb, weil ich auf das lange {1.2...17} (für eine IMPLIZITE Matrixformel) verzichte.
Willst Du das 5. Auftreten eines WT nun auf den LETZTEN QUARTALS-Monat einschränken, wird erstens die Bedingung "MONAT durch 3 teilbar" nötig, und zweitens eine Erweiterung von vorher 17 auf ca. 200 Tests:
{=MIN(WENN((TAG(F1+ZEILE($1:$200)*7)&gt28)*(REST(MONAT(F1+ZEILE($1:$200)*7);3)=0); F1+ZEILE($1:$200)*7)) }
195 Tests reichen nicht; ich habe aber nicht ausprobiert, ob die Wahrheit evtl. bei 196-199 Tests liegt.
Anzeige
AW: Nein. Ich habe doch beschrieben, wofür die ...
09.10.2018 19:29:45
Toni
Hi Lupo, hatte gestern Deinen Beitrag gar nicht mehr entdeckt. Also nach wie vor rechnet er mir das so:
https://www.herber.de/bbs/user/124506.xlsx
Hab ich irgendwie Glasperlen auf den Augen?
Grüße Toni
Nimm meine Fml vom 8.10.! (A1 statt F1)
10.10.2018 13:54:44
lupo1
In Deiner Datei sehe ich beliebige Monate. Keine quartalsletzten.
AW: Nimm meine Fml vom 8.10.! (A1 statt F1)
10.10.2018 20:15:16
Toni
Klärchen,
Thx
Gruß
AW: die 2. ersten Mittwoch / Monat
07.10.2018 10:42:03
Toni
Hallo Matthias,
dank Dir weiß ich, wie so einen Code durchs ganze Jahr jage. Sehr, sehr hülfreich :)
Nach einigem Basteln habe ich nun versucht, deinen Code leicht auf meinen Fall hin abzuwandeln, im Code springt der Debugger direkt in die Zeile, wo's drauf ankommt. Er schwächelt also kurz vorm Ziel. Kannst Du ihm vielleicht noch über die Ziellinie helfen?
Danke falls ja und Danke falls nicht für alles bis hierhin!
https://www.herber.de/bbs/user/124468.xlsm
Anzeige
AW: die 2. ersten Mittwoch / Monat
07.10.2018 11:39:01
Toni
... n habe ich angepasst auf:
n = CDate(i) - .Cells(1, 6).Value + 6
Häckchen vergessen....owT
07.10.2018 17:45:10
Toni
AW: Häckchen vergessen....owT
07.10.2018 17:46:03
Toni
nu aber
warum stellst Du den Beitrag wieder auf offen ? oT
07.10.2018 18:18:43
Matthias
AW: warum stellst Du den Beitrag wieder auf offen ? oT
07.10.2018 19:37:36
Toni
weil ich auf Deinen Beitrag heute morgen noch geantwortet habe und hoffe, dass sich dieses Problems jemand annimmt
Grüße
AW: warum stellst Du den Beitrag wieder auf offen ? oT
07.10.2018 19:38:02
Toni
AW: warum stellst Du den Beitrag wieder auf offen ? oT
08.10.2018 09:35:24
Toni
Hallo,
ich hatte versucht per Schlüssel die Monatswochen mitzugeben in diesem Code, beispielsweise stünde 1w11 für die Monatswochen 1,3,4
Der nachfolgende Code läuft aber gegen einen Fehler:
Sub X_WT_Pro_Monat()
Dim x&, Jahr&, i&, z&, WT&, lRow&, b&, m&, n&
Dim DatenA As Date
Dim DatenE As Date
Dim a As Range
With ThisWorkbook.Worksheets("Test")
lRow = Cells(Rows.Count, 1).End(xlUp).Row
For Each a In .Range("A3:A" & lRow)
Jahr = Year(.Cells(1, 7).Value) 'Jahr einstellen
WT = Weekday(a.Offset(0, 1).Value, 1) '3 = Mittwoch 
kann bitte einer schauen warum?
https://www.herber.de/bbs/user/124478.xlsm
Vielen Dank
Toni
Anzeige
Du hast nur 16384 Spalten!
08.10.2018 13:06:14
Matthias
Hi
Das ist nur so meine Vermutung!
Du hast nur 16384 Spalten, willst aber Daten in Spalte(43839) schreiben
Prüf das mal mit Debug.Print
'...
n = CDate(i) - a.Offset(1, 6).Value + 6
Debug.Print x
Debug.Print n
Debug.Print 7 * (1 - x) + n
a.Offset(0, (7 * (1 - x)) + n).Value = "x" 'deshalb steigt hier VBA aus
'...
Gruß Matthias
AW: Du hast nur 16384 Spalten!
08.10.2018 19:04:18
Toni
Hi Matthias,
woher willst du aus der Ferne wissen, welche Anzahl Spalten ich hier habe ^^
Debug.Print habe ich bisher nicht genutzt und stelle fest: macht echt Spaß,da aufschlussreich.
Allerdings habe ich seitdem so viele Fehler gefunden, dass ich mir erstmal eine Flasche Rotwein gekauft habe und nachher mal weiter schaue.
pfff, nächste Runde
Danke bs,
Toni
Anzeige
Na denn ... Prost ;-) owT
08.10.2018 19:23:33
Matthias
AW: Na denn ... Prost ;-) owT
08.10.2018 20:11:51
Toni
Danke Matthias, schwierige Geburt! Wirklich schwierige Geburt, aber jetzt sitzt der Frosch!
Mit dem Direktfenster hast Du mich um Längen weitergebracht. Danke dafür und einen schönen Abend.
Bleibt abzuwarten, ob er auch morgen bei Lichte betrachtet und in aller Nüchternheit noch läuft ...
geht sicher schöner und noch nicht endgeprüft, aber so:
Grüße Toni
Sub X_WT_Pro_Monat()
Dim x&, Jahr&, i&, z&, WT&, lRow&, b&, n&
Dim DatenA As Date
Dim DatenE As Date
Dim a As Range, m As Variant
With ThisWorkbook.Worksheets("Test")
lRow = Cells(Rows.Count, 1).End(xlUp).Row
For Each a In .Range("A3:A" & lRow)
Jahr = Year(.Cells(1, 7).Value) 'Jahr einstellen
WT = Weekday(a.Offset(0, 1).Value, 2) '3 = Mittwoch 

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige