Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 6. 1. 2022 12:57:54

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 113

Soubor *.ods konvertovaný do *.xls - VYŘEŠENÉ

Je mě jasné, že tento převod může někdy činit problémy. Ale teď jsem se setkal s věcí, kterou mě hlava nebere. V OO vše funguje jak má. Při načtení do Excelu ale jeden vzorec ZVLÁŠTNĚ nefunguje - viz. přiložená ukázka. https://ulozto.cz/tam/86ea5bcd-856c-4df … c989e84e72


V buňkách E5 až U5 (kromě M5) je vždy ten samý vzorec - např. =VLOOKUP(E4;Data.H3:I38;2;0), tedy podle hořejší buňky E4 dosadí odpovídající hodnotu do buňky E5 (F4 do F5 atd). Vždy naprosto obdobný vzorec, který vybírá hodnoty dle stejného klíče - stejný rozsah buněk. Pro buňky E až N funguje správně, pro buňky O až U dává chybnou hodnotu. Vzorec je stejný, tak v čem může být chyba. Zkoušel jsem kontrolovat jednotlivé formáty budněk (číslo, text a pod.) nenašel jsem rozdíl.



Kde jinde ještě hledat chybu ??

Editoval hdplot (6. 1. 2022 13:57:06)

Offline

#2 6. 1. 2022 13:05:20

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 678

Re: Soubor *.ods konvertovaný do *.xls - VYŘEŠENÉ

v O4 až U4 doplňte =value(...) v excelu pak bude =HODNOTA(...)


LibreOffice 6.2.

Offline

#3 6. 1. 2022 13:36:41

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 113

Re: Soubor *.ods konvertovaný do *.xls - VYŘEŠENÉ

Doplnil jsem a funguje - díky.


Ale pro moje pochopení se ještě ptám: V buňkách O až U byly číslice a doplnění HODNOTA() pomohlo. V buňkách K a L byly také číslice, ale fungovalo to i předtím, Tedy bez klíčového slova HODNOTA a taky po doplnění slova HODNOTA. Naopak v buňkách E až J byly písmena a tam to po doplnění slova HODNOTA naopak fungovat přestalo.


Tedy Excel rozlišuje, jestli je znak písmeno nebo číslice a podle toho se to musí měnit? To mě připadá jako omezení, protože pak už není vzorec univezrální, ale závisí na obsahu kontrolované buňky. V tomto je tedy OO chytřejší a lepší. Nebo je nějaký jiný klíč k tomu, kde slovo HODNOTA použít a kde nepoužívat?

Offline

#4 6. 1. 2022 13:43:29

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 678

Re: Soubor *.ods konvertovaný do *.xls - VYŘEŠENÉ

funkce MID() (v excelu ČÁST()) vrací text bez ohledu zda jde o písmeno nebo číslo. V LO si to funkce VLOOKUP přebere takže když hledá text "2" a najde číslo 2 tak to považuje za úspěšné nalezení. Excel zřejmě hledá "2" a když najde 2 tak to má ze nesouhlasné, protže hledá text a nachází jen číslo. Nevím jak to řesit jinak, třeba se ještě někdo ozve :-)


LibreOffice 6.2.

Offline

#5 6. 1. 2022 13:56:43

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 113

Re: Soubor *.ods konvertovaný do *.xls - VYŘEŠENÉ

OK, takto mě to stačí. Je pevně dané, ve které buňce bude písmeno a ve které číslice, takže to lze takto "natvrdo" rozlišit. Chtěl jsem jenom vědět pro příště a potvrzujete mě, že OO je lepší :-))

Offline

#6 6. 1. 2022 18:35:40

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 830

Re: Soubor *.ods konvertovaný do *.xls - VYŘEŠENÉ

vlookup v excelu neprovádí automatickou konverzi typu. Je tedy nutné hodnoty ošetřit na listu nebo provést konverzi přímo ve vzorci tak aby se shodoval type hodnoty v tabulce a hledané hodnoty.


O tom, který přístup lepší, by se mohla vést dlouhá debata. Automatické konverze nemám rád a navíc někdy je těžké je obejít - pracuji dost s 18ti číselnými identifikátory - automatická konverze výpočty zmrší a ve funkcích typu sumif, coutif o ní moc lidí ani neví.


Obecně smíšené typy ve vyhledávacím klíči nejsou dobrým nápadem (nikde). Těch problémů je docela dost. Společným typem pro číslo i text je text, tj. pokud není klíč vždy číselný, hodnotu v tabulce převádím na text a hledanou hodnotu nastavuji ve vzorci (u klíčů typu '000121' záleží na okolnostech, obvykle preferuji textový tvar). Potom hledání vypadá:

VLOOKUP("'" & a1; b1:xxx ...)

nebo např. maticově:


index(d1:d50; match("'" & a1; b1:b50; 0)

Nevýhodou ale je, že pokud je požadována přibližná shoda, je pořadí řádků obecně závislé na prostředí.


Opačný přístup, tj. text nechat textem a číslo v textu převádět na číslo vede ke složitějším vzorcům. Funkce value text vyzmizíkuje a pak nic dobrého nenajdete.


Lze, ale nedoporučuji, nastavit obě strany, maticově, 


index(d1:d50; match("'" & a1; "'" & b1:b50; 0)

Při větší tabulce je to pomalé, konvertuje se větší objem dat v každém výpočtu,  obtížně se dá uhlídat pořadí v tabulce a pak je nezbytné použití sekvenční hledání (přesná shoda) místo rychlého binárního...

Editoval lp. (6. 1. 2022 18:37:05)

Offline

Zápatí