< návrat zpět

MS Excel


Téma: Chyba 29.2.1900 odstraněna? rss

Zaslal/a 9.2.2016 9:13

Slavná chyba Excelu, údajně zděděná z Lotus 1-2-3, pokládá datum 29.2.1900 za existující, i když rok 1900 není přestupný.
Při ladění algoritmu, který pracuje s funkcí VBA Format jsem právě zjistil, že den nula se v ní posunul z 31.12.1899 na 30.12.1899. Zpozorněl jsem a zkusil jsem zadat slavné 29.2.1900. A ejhle! Funkce Format toto datum pokládá za nepřípustné. Den s pořadovým číslem 60 je 28.2.1900, číslo 61 má 1.3.1900. Slavná chyba pro funkci Format neplatí!
Bohužel jsem se radoval jen chvilku. Pro přímé zadání datumu do buňky, naformátované jako "d.mm.rrrr", dál platí, že den 0 je 31.12.1899 a že den 60 je dále neexistující 29.2.1900.
K nápravě fakticky nedošlo, jen Excel má rozostřené vidění prvních 60 dnů v systému 1900. V tomto období numerický formát buňky vidí datum od 31.12.1899 do 29.2.1900, zatímco funkce Format stejné období vidí od 30.12.1899 do 28.2.1900. Počínaje dnem 61 funguje převod na datum shodně a správně pro oba typy zobrazení.
Dodatek: až doteď jsem se domníval, že funkce Format ve VBA a funkce listu HODNOTA.NA.TEXT pracují ve shodě. V případě dne 60 to neplatí! Tento den nadále funkce listu převádí na neexistující 29.2.1900...

Zaslat odpověď >

#029986
avatar
Co vrátí:

? format(-657434, "dd.mm.yyyy")citovat
icon #029988
eLCHa
https://msdn.microsoft.com/en-us/library/aa263420(v=vs.60).aspx

Date 8 bytes January 1, 100 to December 31, 9999

že by 1.1.100 ?citovat
icon #029990
eLCHa
Jinak - souhlasím s tímto názorem a také si myslím, že tato chyba nebude nikdy odstraněna.citovat
#029994
avatar
Souhlasit s názorem o chybě je odpověď chytré horákyně. Když už tu chybu Excel přijal, měl ji přijmout důsledně. Ale je to jednou tak a podruhé jinak! To je o stupeň větší bordel než chyba sama! A to je důvod, proč jsem příspěvek poslal. Chtěl jsem upozornit na tuto skutečnost, když už jsem si jí všiml...
A co se týká logického rozsahu položky Date od 1.1.100, tu mám ověřenou a opravdu platí. Má jenom takový háček: dost dobře ji nelze jako datum zobrazit. A navíc to nijak nesouvisí s 29.únorem 1900.
Kdyby to někoho zajímalo, mám k dispozici kalendářní systém s rozsahem plus minus 8 milionů let, který umí juliánský i gregoriánský kalendář a který vadou 29.2.1900 netrpí.citovat
icon #029995
eLCHa
Dobrá tedy. Tak nesouhlasím s názorem, že je to bordel. Na listu jde o zpětnou kompatibilitu s Lotusem a následně s prvními verzemi excelu.
Ve VBA jde o kompatibillitu (resp. převzetí) pravidel z VB6.

Není to tedy vlastně chyba, ale záměr. Jestli je správný, na tom už nezáleží.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje