Temat: Rozdzielenie skrajnych dat okresami miesięcznymi

Witajcie.
O rozwiązanie poprosiły "kadrowe"; wydawało się proste, ale po usłyszeniu szczegółów, poległem.
Zadanie:
są dwie daty określające początek i koniec zdarzenia, np. urlopu. Jeśli są z tego samego miesiąca, sprawy nie ma. Jeśli końcowa przechodzi na kolejny miesiąc, trzeba te daty rozdzielić okresami zawierającymi się w obrębie miesiąca. Czyli: jeśli początkowa do np. 5 stycznia a końcowa 5 lutego, to ten przedział dat należy przedstawić jako 5 stycznia - 31 stycznia i 1 lutego - 28 lutego. Jeśli daty skrajne są bardziej od siebie odległe, arkusz powinien wyświetlić pomiędzy nimi wszystkie pełne miesiące Tutaj: http://pierzajki.pl/daty0.xlsx zamieściłem swoje początkowe próby.
Rozdzieliłem daty skrajne 22 kolumnami pomocniczymi. Wpisałem w B3 formułę dla daty rozpoczynającej się i kończącej w styczniu: =JEŻELI(ORAZ(ROK(X3)=ROK(A3);MIESIĄC(A3)=$B$2;MIESIĄC(X3)-MIESIĄC(A3)=0);$Y$3;""). No i działa.
Ale wymaga jeszcze rozszerzenia o sytuację, gdy data końcowa będzie spoza stycznia. I tu już kłopot...
W komórce C3 mam rozpoczętą formułę, kóra działa dla sytuacji: start w styczniu, koniec w lutym.
I patrząc na to widzę oczami wyobraźni ;), że aby opisać wszystkie warianty w 22 kolumnach pomocniczych to stworzę (o ile sobie poradzę) przegigantyczne formuły, diabelnie rozbudowane i prawdopodobnie bardzo obciążające excela/system.
Zaproponujecie bardziej inteligentny pomysł na takie rozdzielanie dat okresami miesięcznymi? Makro to ostateczność; najlepiej formułami.
Z góry dzięki!
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: Rozdzielenie skrajnych dat okresami miesięcznymi

Najlepiej użyć do tego VBA i sprawdzić czy data zawiera się w konkretnym msc w pętli od min do max, dzień po dniu, dodać do kolekcji lub tablicy kolejne przedziały, a potem je zrzucić na arkusz np do kolejnych komórek w wierszu.
Trochę z tym roboty, ale tak ja bym zrobił.
Andrzej Kowalski

Andrzej Kowalski Technik pomiarów /
metrolog, Hutchinson
Poland Sp. z o.o.

Temat: Rozdzielenie skrajnych dat okresami miesięcznymi

Da się zrobić, wykorzystałem funkcję MIESIĄC i podział na 24 kolumny.
Sprawdzenie w 1 kolumnie danego miesiąca czy początek jest w tym miesiącu, jeśli tak to w komórce data początkowa, jeśli nie - data z 1pierwszym dniem miesiąca (kod dla maja):
=JEŻELI(MIESIĄC($A5)=J1;$A5;JEŻELI(ORAZ(DATA(2021;J1;J2)>$A5;DATA(2021;J1;J2)<$Z5);DATA(2021;J1;J2);""))


Obrazek


Analogicznie dla końca miesiąca (kod dla maja)
=JEŻELI(MIESIĄC($Z5)=J1;$Z5;JEŻELI(ORAZ(DATA(2021;J1;K2)>$A5;DATA(2021;J1;K2)<$Z5);DATA(2021;J1;K2);""))


Obrazek


Pliczek z przykładem:
http://www.owrp.cba.pl/gl/Kopia_daty0-1.xlsxTen post został edytowany przez Autora dnia 22.06.21 o godzinie 18:36

Następna dyskusja:

obliczanie różnicy dat




Wyślij zaproszenie do