Zamiana liczby (numeru miesiąca) na nazwę miesiąca

by Marcin

Od czasu do czasu zachodzi potrzeba zmiany numeru miesiąca na jego nazwę i odwrotnie.
Dzisiaj będzie o tym, w jaki sposób zamienisz numer miesiąca na jego nazwę. Jutro napiszę o tym jak dokonać procesu odwrotnego, czyli zamienić nazwę miesiąca na odpowiedni numer.

Zamiana numeru miesiąca na jego nazwę.

Pierwszy sposób, jaki przyszedł mi do głowy to zrobić sobie po prostu listę komórek z kolejnymi nazwami miesięcy, a następnie skorzystać z funkcji

= INDEKS($B$3:$B$14;D3)

gdzie $B$3:$B$14 to oczywiście zakres z nazwami miesięcy, a C3 to komórka z liczbą, dla której szukamy nazwy miesiąca.

Zamiana liczby na nazwe miesiąca

Jeżeli posiadasz listę dat i potrzebujesz „wyciągnąć” z nich miesiące funkcja INDEKS, w powyższej postaci, zwróci błąd. Chcąc, aby zadziałała poprawnie trzeba, przy pomocy funkcji MIESIĄC, pobrać numer miesiąca z komórki z datą . Formuła wyglądać będzie więc następująco:

=INDEKS($B$3:$B$14;MIESIĄC(E3))

Zamiana liczby na nazwę miesiąca

Na nieco podobnej zasadzie jak funkcja INDEKS działa inna funkcja, którą możesz wykorzystać – WYBIERZ. Różnica polega na tym, że nie korzysta ona z komórek arkusza do przechowywania nazw miesięcy. Podajemy je po prostu jako argument funkcji.

Funkcja WYBIERZ jako argumenty przyjmuje numer indeksu (określający, którą pozycję z listy wartości zwrócić w wyniku) oraz listę wartości. Zainteresowanych szczegółami oczywiście odsyłam do plików pomocy.

Jeżeli jako listę wartości podasz nazwy wszystkich miesięcy (po kolei), a jako indeks komórkę z numerem miesiąca, funkcja zwróci odpowiednią nazwę miesiąca dla każdego podanego numeru.

=WYBIERZ(D3;”Styczeń”;”Luty”;”Marzec”;”Kwiecień”;”Maj”;”Czerwiec”;”Lipiec”;”Sierpień”;”Wrzesień”;”Październik”;”Listopad”;”Grudzień”)

Zamiana liczby na nazwę miesiąca

Podobnie jak poprzednio, w przypadku określania nazwy miesiąca na bazie daty, potrzebujesz wspomóc się funkcja MIESIĄC,

Jeszcze innym sposobem (w moim odczuciu najwygodniejszym) jest skorzystanie z funkcji TEKST (wszystko co funkcja TEKST robi to zamiana wartość liczbowej na odpowiednio sformatowany tekst).

Jeżeli posiadasz listę dat i chcesz po prostu „wyciągnąć” z nich nazwy miesięcy wystarczy użyć:

=TEKST(E3;”mmmm”)

gdzie E3 to oczywiście komórka z datą.

Jeżeli pracujesz tylko z numerami (1-12) funkcja w powyższej postaci nie zadziała poprawnie. Pamiętać bowiem musisz, że liczba 1 to dla Excela 1 stycznia 1900 roku, liczba dwa to 2 stycznia 1900 roku i tak dalej. Jest to cały czas ten sam miesiąc – styczeń. Dlatego TEKST(E3;”mmmm”) zwróci „styczeń” dla każdego numeru miesiąca.

Łatwo możesz jednak zamienić kolejne dni na numery miesięcy. Wystarczy na przykład, że pomnożysz każdą liczbę przez średnią ilość dni w miesiącu (30).

Funkcja

=TEKST(D3*30;”mmmm”)

zadziała więc poprawnie i jako wynik zwróci Ci nazwy miesięcy.

Zamiana liczby na nazwę miesiąca

Wszelkie inne pomysły, jak zwykle, mile widziane.


{ 13 comments… read them below or add one }

peem

Witam

Gratuluję ciekawej strony. Do niedawna sam bardzo mocno pracowałem z Excelem, teraz po zmianie pracy już mniej. Ale i tak jeśli coś mam akurat do zrobienia to otwieram arkusz 😉

Strona jest już u mnie w ulubionych i na pewno będę ją odwiedzał regularnie (rss!) a dzisiaj mam zamiar prześledzić achiwalne wpisy.

pozdrawiam
Paweł Matysiak

Ya-req

Witam,
mam już nieco doświadczenia w używaniu Excela, ale wciąż jeszcze go odkrywam. Funkcja „WYBIERZ” jest ciekawym „narzędziem”, ale ostatnio zacząłem się zastanawiać nad optymalizacją pracy w Excelu dzięki niej. Otóż nie zawsze zachodzi potrzeba korzystania ze wszystkich formuł jednocześnie, a jedynie opcjonalnie, „w oparciu o numer wskaźnika”, tak więc zadania do wykonania byłyby zapisane w 29-cioargumentowej bazie danych (kolumnie) będąc pozbawione znaku „=”, lub też „zneutralizowane” w inny sposób (np. przez porzedzenie znaku równa się apostrofem). Po co to robić? Pamiętajmy, ze każda formuła dodatkowo „obciąża” arkusz. Nie ma problemu, jeśli jest ich z założenia niewiele, ale co wtedy, gdy arkusz się rozrasta i zapełnia formułami – wtedy to obciążenie zaczyna być odczuwalne, wszystko wolniej „chodzi”. W takiej sytuacji dobrze byłoby niepotrzebne w danej chwili funkcje wyłączyć i wywoływać je tylko wtedy gdy są potrzebne. Przykładowo, jeśli mamy w kolejnych wierszach zapisane formuły, których zadaniem jest pobieranie wartości z określonych komórek kolejnych arkuszy, a nie potrzebujemy pobierać wszystkich tych wartości naraz, to po co te wszystkie formuły mają „”pracować” cały czas opóźniając pracę nad danymi które nas interesują w danej chwili? Niestety nie wiem jak rozwiąć ten problem. Czekam zatem na pomysły. Nie wiem czy opisałem to zagadnienie wystarczająco przejrzyście, ale jeśli zajdzie taka potrzeba postaram się je doprecyzować.

Krzyżanowski

Witam,
probuje przekszatlcic date w numer tygodnia (w roku) np. 20.08.2009 chce w rubryce obok przedstawic jako tydzien 34.
Stosowalem formule =weeknum(d6;2) akw niestety jakos nie dziala. Pokazuje mi sie w rubryce „#Name”.
Prosze o pomoc jak mogte bten problem rozwiazac
Dzeiki za szybka odpowiedz
Jarek

tkuchta1

f WEEKNUM jest składnikiem dodatku Analysis ToolPak

http://office.microsoft.com/pl-pl/excel/HP052093371045.aspx

tkuchta1

a co do samego tematu: taka ciekawostka 🙂

[code]Option Explicit

Function Eval(polecenie As String)
Dim ScrContr As Object
Set ScrContr = CreateObject("ScriptControl")
ScrContr.Language = "VBScript"
Eval = ScrContr.Eval(polecenie)
Set ScrContr = Nothing
End Function[/code]
i formuła [code]=Eval("MonthName(""8"")")[/code] z odwołaniem [code]=Eval("MonthName("&A1&")")[/code]

margot

Inny sposób jak przekształcić date w numer tygodnia (w roku) np. 20.08.2009. Funkcja weeknum zadziała tylko dla formatu daty rrrr-mm-dd, czyli w tym wypadku 2009-08-20. Najpierw trzeba przekształcić date na wymagany format, np w ten sposób (załóżmy że 20.08.2009 to komórka A1):
=weeknum(data(fragment.tekstu(A1;7;4);fragment.tekstu(A1;4;2);fragment.tekstu(A1;1;2));2)

Marcin Kucharski

Mozna jeszcze inaczej jeżeli chodzi o miesiące. Formuła troszkę przydługa, ale działa sprawnie:
=JEŻELI(MIESIĄC(a1)=1;”January”;JEŻELI(MIESIĄC($C95)=2;”February”;JEŻELI(MIESIĄC($C95)=3;”March”;JEŻELI(MIESIĄC($C95)=4;”April”;JEŻELI(MIESIĄC($C95)=5;”May”;JEŻELI(MIESIĄC($C95)=6;”June”;JEŻELI(MIESIĄC($C95)=7;”July”;JEŻELI(MIESIĄC($C95)=8;”August”;JEŻELI(MIESIĄC($C95)=9;”September”;JEŻELI(MIESIĄC($C95)=10;”October”;JEŻELI(MIESIĄC($C95)=11;”November”;JEŻELI(MIESIĄC($C95)=12;”December”;0))))))))))))
Gdzie A1 to komórka zawierającą datę (format data)
Oczywiście mozna podmienić nazwy miesięcy na polskie. Jak kto lubi.

Krizz

Do Marcina Kucharskiego:
Próbowałem Twoją formułę zastosować do zadania odwrotnego: na podstawie wpisu do komórki JAN, FEB itd. formuła zwraca numer miesiąca. Wszystko gra do lipca. Potem formuła zgłasza błąd. Z helpa wynika, że excel nie pozwala na więcej zagnieżdżeń niż siedem. I to by się zgadzało, niestety. Jak to obszedłeś?

ZKes

=MIESIĄC(DATA.WARTOŚĆ(A1&”-2000″))
gdzie w A1 jest miesiąc słownie
2000 – dowolny rok
Należy pamiętać aby komórka z formułą nie była sformatowana formatem Data tylko jakimś liczbowym lub ogólnym.

GK

Jeśli chcemy zamienić liczbę 1-12 na nazwę miesięca wystarczy użyć formuły:

=TEKST(DATA(;A1+1;);”mmmm”)

Paweł

witam
ja walczę z czymś takim:
– chciałbym taki zapis w komórce
1990-01-01 – 1994-09-01
zamienić na:
1990 Styczeń – Wrzesień 1994
próbuję, ale ciągle mi nie wychodzi….

Mirek

Albo można tak:
TEKST($E3;”mmmm”)
Gdzie w komórce E3 data jest przedstawiona w formacie rrrr-mm-dd (2014-11-12).

Dobry wpis 🙂

A

Wpisuje w komórkę 201501 lub 2015-01 jak z takiego tekstu wyciągnąć 2015 i 01 zamienić na styczeń?

Leave a Comment

Previous post:

Next post: