Myslím, že hlavní problém je v pochopení typu obsahu buňky (text, číslo, vzorec), způsobu jeho zobrazení (formát) a použití formátu při vkládání konstanty.
Při vkládání se calc podle formátu buňky rozhoduje, jaký typ objektu uloží - pokud je při vstupu formát text (přesněji '@'), je bráno vše, co zadáte jako text a tak je to i uloženo. Při použití jiného formátu než je text se calc podle určitých pravidel rozhoduje (občas i špatně - datumy například), co vlastně vkládáte - vzorec, číslo nebo text. K hodnotě automaticky přiřadí také formát. Další změna formátu nemění již uložený objekt, ale jen jeho způsob zobrazení.
Když tedy do textové buňky vložíte 5, říkáte, že je to text a je to také tak uloženo. Když změníte formát na jiný, objekt zůstává neměněn a při editaci se zobrazí '5, protože takto vkládáme textové řetězce, které obsahují jen číslice při použití jiného než textového formátu buňky. Calc se tedy chová zcela správně.
Pro úplnost připomínám, že šablonka pro formát čísla je obvykle "0;-0;0;@" takže text zobrazí bez změn. Pokud potřebujete, aby calc zařval použijte kontrolu vstupních dat nebo třeba formát
0;-0;0;[RED]"Chyba!!! ("@")"
(číslo zobrazí normálně, text zobrazí červěně v závorce a přev závorku napíše chyba)
Pokud potřebujete změnit typ uložené hodnoty (z textu na číslo) fungují pro výpočty (někdy) automatické konverze nebo explicitně řeknete, že chte použít číslo z buňky (např. funkce value, n), nebo použijete makro, které hodnotu v buňce zkonvertuje.