Přestupný rok v Excelu
Excel má v kalendáři jednu slavnou chybu: považuje 29. 2. 1900 za existující den, i když ten den nikdy nebyl. Tady je vysvětlení i vzorec, kterým přestupný rok spolehlivě poznáte.
Datum je v Excelu číslo
Na kurzech říkám, že Excel je velký lhář a o datu, čase ani účetnickém formátu nemá ani páru. Datum je pro něj celé číslo: jednička je 1. 1. 1900, dvojka 2. 1. 1900 a tak dál. Stejný princip využívá třeba generování cvičných dat funkcí RANDARRAY. Cokoli staršího je pro Excel prostý text, se kterým se nedá počítat.
Proč tam ten 29. únor 1900 je
Rok 1900 dělitelný čtyřmi je, přestupný ale nebyl. Excel to přesto počítá, aby zůstal kompatibilní s Lotusem 1-2-3, který tuhle chybu obsahoval. Microsoft ji úmyslně nikdy neopravil – oprava by posunula všechna existující data o jeden den.
V praxi to nevadí, protože se počítá s daty po roce 1900. Vadilo by to jen při výpočtu s daty z 19. století, a ta v Excelu stejně nefungují.
Jak přestupné roky doopravdy fungují
Dělitelnost čtyřmi je jen první pravidlo ze tří. Podle Microsoftu se postupuje takhle:
- Je rok dělitelný 4? Když ne, není přestupný.
- Je zároveň dělitelný 100? Když ne, přestupný je.
- Je dělitelný i 400? Když ano, je přestupný. Když ne, není.
Proto byl rok 2000 přestupný (dělí se 400), zatímco 1900 ne (dělí se 100, ale ne 400). Podrobnosti jsou i na Wikipedii.
Vzorec, který přestupný rok pozná
Rok je v buňce A1:
=KDYŽ(NEBO(MOD(A1;400)=0;A(MOD(A1;4)=0;MOD(A1;100)<>0));"Přestupný rok";"Nepřestupný rok")
| V A1 je hodnota | Vzorec vrací |
|---|---|
| 1992 | Přestupný rok |
| 2000 | Přestupný rok |
| 1900 | Nepřestupný rok |
Druhá cesta vede přes datum: =DEN(DATUM(A1;3;0)) vrátí počet dní v únoru daného roku, tedy 28, nebo 29. Nultý březen Excel bere jako poslední únorový den. Funkce KDYŽ, A, NEBO a MOD patří do základní výbavy; jak si je osvojit bez biflování, je v článku Jak se naučit funkce Excelu.
Práci s datem a časem v Excelu, včetně podobných chytáků, probíráme na kurzu Excel – práce s datumem a časem; podmínky a logické funkce na kurzu Excel – podmínky, logické a informační funkce.
Časté otázky
Proč Excel zná 29. únor 1900?
Kvůli zpětné kompatibilitě s Lotusem 1-2-3. Chyba je v Excelu záměrně, protože její oprava by posunula všechna dříve zadaná data.
Jak v Excelu zjistím, jestli je rok přestupný?
Vzorcem s funkcemi MOD, A a NEBO podle návodu výše, nebo jednodušeji =DEN(DATUM(A1;3;0))=29.
Od kterého data umí Excel počítat?
Od 1. 1. 1900 (ve Windows). Starší data zadaná do buňky se chovají jako text.