Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

... fünf Montage im Monat Februar ... Übung
#1
Hallo @ all, durch eine Quiz-Show, die Montag auf RTL lief, wurde ich inspiriert folgende Übung mal durch zu spielen. Es ging dort um den 5. Montag im Monat Februar. (Eine der Auswahlmöglichkeiten). Das nächste Mal, wann es 5 Montage im Februar gibt.

Meine kleine Übung: Wie oft trifft es zu, dass es 5 Montage im Februar gibt - in einem definierten Zeitraum und in welchen Jahren ist dies der Fall. Gegeben sind nur ein Start- und ein Enddatum. Siehe kleiner Tabellenausschnitt.

Mich würde interessieren, wie ihr das lösen würdet. Ich für mich habe das mit Power Query gelöst. Es würde mich freuen, wenn es den einen oder anderen gibt, der sich hier beteiligt. Ob VBA oder Formel oder Power Query ist egal...


Arbeitsblatt mit dem Namen 'Tabelle3'
ABCD
101.01.1900
231.12.2150in welchen JahrenAnzahl
3
4
5
6
7
8
9
10
11
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#2
Hi Jörg,

mit VBA:
Sub AnzahlFebruareMitFuenfMontagen()
Dim lngAnzahlJahre As Long
Dim lngJahr As Long
Dim datBis As Date
Dim datVon As Date
Dim varJahre As Variant

datVon = Range("A1").Value
datBis = Range("A2").Value
ReDim varJahre(1 To Year(datBis) - Year(datVon), 1 To 1)

For lngJahr = Year(datVon) To Year(datBis)
If Day(DateSerial(lngJahr, 2, 29)) = 29 Then
If Weekday(DateSerial(lngJahr, 2, 29), 2) = 1 Then
lngAnzahlJahre = lngAnzahlJahre + 1
varJahre(lngAnzahlJahre, 1) = lngJahr
End If
End If
Next lngJahr

Range("C3").Resize(UBound(varJahre)).Value = varJahre
Range("D3").Value = lngAnzahlJahre
End Sub
Gruß Uwe
Antworten Top
#3
Moin Uwe, das ging ja rasant. Und ist richtig - was sonst. (^_-) toll...
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#4
Hallo, bislang habe ich zwei Varianten zur Lösung der kleinen Übung bekommen. Eine per PN. Beide mit dem richtigen Ergebnis - die eine VBA, die andere mit Power Query. Danke schon mal dafür. Ich warte noch ein wenig. Es gibt ja keine Auswertung mit Wertung und kein Preis... Trotzdem würde ich den thread am Sonntag Abend schliessen - und dann meinen Vorschlag einbringen. Mal sehen - vielleicht tut sich ja noch etwas. Eine Formelvariante vielleicht, obwohl: das glaube ich eher weniger. (Aber trotzdem) Danke fürs mitgrübeln...
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#5
ABCD
101.01.1901
231.12.2150In welchen Jahren
319049
41932
51960
61988
72016
82044
92072
102112
112140

ZelleFormel
C3=WENNFEHLER(AGGREGAT(15;6;(1900+ZEILE($A$1:$A$250))/((TAG(("1.3."&1900+ZEILE($A$1:$A$250))-1)=29)*(REST("1.2."&1900+ZEILE($A$1:$A$250);7)=2));ZEILE(A1));"")
D3=ANZAHL($C$3:$C$15)
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
Gruß
Michael
Antworten Top
#6
Moin Michael, danke für deinen Beitrag. Sieht auf den ersten Blick super aus. ABER: Der definierte Zeitraum soll frei definierbar sein, also auch unterjährig... Das ist jetzt unschön - von mir wegen der ungenauen Vorgabe... Beim Testen habe ich festgestellt, dass das auch Uwe's Beitrag betrifft... SORRY.... Auch die Power Query Lösung aus der PN ist betroffen... Oje... 

Bitte nicht böse sein, wegen der offensichtlich schwachen Formulierung...

Also wenn der Start nach dem Februar ist oder das Ende im Januar liegt sollte das jeweils betroffene Jahr nicht mit aufgeführt werden... 

Ja, Fragen stellen ist manchmal schwerer, als sie zu beantworten...
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#7
Hi Jörg,

(16.01.2019, 18:21)Jockel schrieb: Der definierte Zeitraum soll frei definierbar sein, also auch unterjährig...

auch kein Problem: Wink
Sub AnzahlFebruareMitFuenfMontagen()
 Dim lngAnzahlJahre As Long
 Dim lngJahr As Long
 Dim datBis As Date
 Dim datVon As Date
 Dim varJahre As Variant
 
 datVon = Range("A1").Value
 datBis = Range("A2").Value
 ReDim varJahre(1 To Year(datBis) - Year(datVon), 1 To 1)
 
 For lngJahr = Year(datVon) To Year(datBis)
   If DateSerial(lngJahr, 2, 1) >= datVon And DateSerial(lngJahr, 2, 29) <= datBis Then
     If Day(DateSerial(lngJahr, 2, 29)) = 29 Then
       If Weekday(DateSerial(lngJahr, 2, 29), 2) = 1 Then
         lngAnzahlJahre = lngAnzahlJahre + 1
         varJahre(lngAnzahlJahre, 1) = lngJahr
       End If
     End If
   End If
 Next lngJahr
 
 Range("C3").Resize(UBound(varJahre)).Value = varJahre
 Range("D3").Value = lngAnzahlJahre
End Sub
Gruß Uwe
Antworten Top
#8
Hi Uwe, für dich nicht! Passt perfekt. Toll. Da ist wohl ein Bierchen fällig beim nächsten Treffen.
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#9
Hallo, werte Mitleser. Heute möchte ich meinen Lösungsansatz zeigen. Leider wird's beim zeigen bleiben, denn: Die, die mich kennen, wissen, dass ich kein Erklär-Bär bin. Es ist ein Ansatz. Nicht mehr und nicht weniger... Es geht sicher besser - auf jeden Fall anders.  Ich habe einiges Interessante gesehen und gelernt. Wenn es Fragen gibt, versuche ich sie natürlichzu beantworten... So, bin gleich afk - es wird kulturell in Bad Arolsen...


.xlsb   Übung_5ter_Montag_im_Februar_mit_PQ.xlsb (Größe: 18,67 KB / Downloads: 7)
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
[-] Folgende(r) 2 Nutzer sagen Danke an Jockel für diesen Beitrag:
  • Der Steuerfuzzi, Case
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste