Czy jest formuła wyświetlająca liczbę dni w danym miesiącu?
Wiem, że problem ten można rozwiązać za pomocą tabeli pomocniczej i funkcji "wyszukaj.pionowo". Jednak w przypadku lutego pojawia się problem. Może można to zrobić prościej?
Czy jest formuła wyświetlająca liczbę dni w danym miesiącu?
Wiem, że problem ten można rozwiązać za pomocą tabeli pomocniczej i funkcji "wyszukaj.pionowo". Jednak w przypadku lutego pojawia się problem. Może można to zrobić prościej?
Pani Patrycjo.
Jedną z możliwości jest wykorzystanie funkcji DZIEŃ w połączeniu z funkcją DATA oraz ROK i MIESIĄC.
Przykład:
W komórce A1 mam datę 2014-02-10, a chcę Excela zmusić do wyświetlenia informacji o liczbie dni w tym miesiącu (lutym).
Wpisuję funkcję:
=DZIEŃ(DATA(ROK(A1);MIESIĄC(A1)+1;1)-1)
ta funkcja "rozbiera" datę z komórki A1 na części składowe, a potem z rozebranych części "składa" ją z powrotem i wyciąga numer ostatniego dnia miesiąca, co jest równoznaczne z liczbą dni.
Funkcja DATA składa datę z kawałków: ROK(A1) to 2014, MIESIĄC(A1) to 2 (luty) - ale dodałem 1, żeby wyszedł kolejny miesiąc: 3 (marzec). Ostatnim elementem funkcji DATA jest numer dnia - tutaj wpisałem 1, żeby uzyskać pierwszy dzień miesiąca następującego po lutym. Wynikiem funkcji DATA jest 2014-03-01.
Od wyniku funkcji DATA odejmuję 1, dzięki czemu funkcja wyświetli mi ostatni dzień lutego. Czyli 2014-02-28.
Wszystko to jest pozagnieżdżane w funkcji DZIEŃ, która wyświetli w tym przypadku liczbę 28 - numer ostatniego dnia lutego, czyli liczbę dni w lutym.
Proszę sprawdzić to na innych datach. Taki zapis jest w stanie uwzględnić też lata przestępne.
Pozdrawiam.
Andrzej Słodownik.
PS. A teraz spodziewam się wysypki alternatywnych rozwiązań kolegów. :-)
Można użyć funkcji:
=NR.SER.OST.DN.MIES(data_początkowa; miesiące)
W starszych Excelach niż 2010 funkcja nosiła nazwę:
=eomonth()
Argumenty tej funkcji to:
data_początkowa - data, względem której obliczamy ostatni dzień miesiąca.
miesiąc - liczba miesięcy przed lub po dacie określonej w argumencie data_początkowa.
Wykorzystanie funkcji:
=nr.ser.ost.dn.mies( dziś(); -1) - ostatni dzień wcześniejszego miesiąca niż aktualny.
=nr.ser.ost.dn.mies( dziś(); 0) - ostatni dzień aktualnego miesiąca.
=nr.ser.ost.dn.mies( dziś(); 3) - ostatni dzień miesiąca o trzy miesiące w przyszłość od aktualnego.
Oczywiście zamiast funkcji dziś() możemy tutaj użyć adresu komórki z datą, względem której liczymy ostatni dzień miesiąca.
Witam.
Dodam tylko, że aby wyświetlić tylko liczbę dni w miesiącu, formuła może mieć postać:
=dzień(nr.ser.ost.dn.mies(dziś();0))
Dla wersji angielskiej Excela z amerykańskimi ustawieniami regionalnymi:
=day(eomonth(today(),0))
Wynikiem tej funkcji będzie liczba dni w aktualnym miesiącu.
Pozdrawiam.
Michał Zieliński.
Lub funkcja VBA:
Function LiczbaDniMiesiaca(Rok As Long, Miesiac As Long) As Long LiczbaDniMiesiaca = Day(DateSerial(Rok, Miesiac + 1, 0)) End Function
Chyba powinno być jeszcze "-1" aby wskazać liczbę dni bieżącego miesiąca, o tak:
Function LiczbaDniMiesiaca(Rok As Long, Miesiac As Long) As Long LiczbaDniMiesiaca = Day(DateSerial(Rok, Miesiac + 1, 0)-1) End Function
Chyba powinno być jeszcze "-1" aby wskazać liczbę dni bieżącego miesiąca, o tak:
Function LiczbaDniMiesiaca(Rok As Long, Miesiac As Long) As Long LiczbaDniMiesiaca = Day(DateSerial(Rok, Miesiac + 1, 0)-1) End Function