Rostislav Moric, projektový manager

Při každodenní rutině využíváme tabulkové kalkulátory. Abychom byli světoví tak můžeme použít i pojem spreadsheet. Nejčastěji se potkáme s Excelem. Tento nástroj si podmanil výrobu v české republice a možná i ve světě. Když chci něco spočítat, tak použiju Excel. A není se co divit, když z toho „lezou“ tak pěkné grafy a tabulky. Asi si říkáte, že tento článek bude óda na kvalitu Excelu. Omyl. Spíše se pojďme zamyslet nad tím, jestli mu opravdu můžeme věřit. Při nespočtu datových analýz jsem narazil na několik zvláštností, které si na nás programátoři z Cupertina připravili.

Ve svých programátorských počátcích jsem si zafixoval dva základní datové typy: ČÍSLO (chcete-li NUMBER) a TEXT (chcete-li STRING). Otázkou zůstává, jestli je datum modifikací číselné hodnoty, ale to bych ponechal na jiných úvahách. S příchodem simulace se objevil datový typ NAME, ale tam by se dalo říct, že se jedná o jakousi modifikaci textu. S číselnými hodnotami se dělají matematické operace a s textovými zase textové a ne obráceně. Microsoft si to však vyložil po svém a trochu nám v tom udělal zmatek. Teda ne trochu, ale pořádně. Zkuste si spolu se mnou jeden příklad.

Vytvořme si základní tabulku, kde vložíme hodnotu 158 v různých formátech (obsah buňky je v hranatých závorkách):

1                 2                       3                    4
číslo             text             číslo jako text         text
158              158                    158                 158

1.    Vložit [158], formát buňky: obecný

2.    Vložit [‚158], formát buňky: obecný

3.    Vložit [158], formát buňky: text

4.    Vložit [‚ 158], formát buňky: text (*Před 1 je vložená mezera)

Do následujícího řádku vynásobte buňku s hodnotou 158 uloženou v různých formátech číslem 2. A v následujícím řádku zkontrolujte, je-li číslo vstupní hodnota a výsledek.

V této chvíli již padá několik mýtů pro práci s textem. Sloupec 2: Text můžeme násobit a výsledek je číslo! Sloupec 4: Ani mezera před 1 nezabrání Excelu provést vynásobení textu. Výsledek opět modifikuje na číslo. Možná si říkáte, že pro výpočet je to OK, ale bohužel se zde hodně pletete. Nikdy nemůžete vědět, jestli takovéto hodnoty (vstupní) nebude někdo importovat do jiného programu a tam už to pravděpodobně bude hodně vadit (pokud nebyl programátor génius a neošetřil všechny možné alternativy). Zkusme jít trochu dále.

Původní hodnotu podrobme na délku řetězce a vezmeme první dva znaky.

Další zjištění možná ne až tak překvapivé, ale číslo je pro Excel taky text. A ve sloupci 4 si pamatuje mezeru před 1. A jako s textem umí i pracovat. Zkusíme kontrolu na výsledek (dva znaky zleva) z pohledu čísla a textu. A zkusíme to naše známé násobení dvěma.

Funkce pro práci s textem nám přetvoří číslo na text, ale i nadále s tím je možné počítat jako s číslem.

Ještě stále zastáváte názor, že plynulý přechod mezi textem a číslem je úplně v pořádku, jak se nás snaží přesvědčit pánové z Cupertina? Pak vězte, že právě sloupec 4 ve mně vzbuzuje značnou nedůvěru při zpracování dat. Stotisíc řádků vám neumožní najít těch pár chyb při přeměně textu na číslo a naopak. A pokud se objeví nechtěná mezera nebo nějaký netisknutelný znak před nebo za hodnotou a neošetříte si to, pak vězte, že chyba je na světě. Míra volnosti, která je v Excelu uplatněna je veliký problém pro databáze, které důsledně rozlišují datový typ a důsledně dbají na správnost syntaxe.