V předchozích dílech jsme pokračovali v projektu, kde zdokonalujeme práci s uživatelskými funkcemi. Když vám v Excelu nějaká funkce chybí, budete si umět poradit skoro se vším. Minule jsme zahájili kontrolu přibližné shody názvu knihy, jak ji zadal uživatel. Pomocí operátoru LIKE jsme si připravili funkci, která připouští shodu v jednom slově i při rozdílu v jednom znaku, tedy při překlepu. Dnes budeme chtít směřovat k cíli pro víceslovné názvy.
Podkladová úloha: Pracujeme se sešitem, v němž je formulář, jejž je třeba vyplňovat. Nedávno nás předseda klubu překvapil požadavkem, že chce posuzovat znalost Kafkových děl, které uchazeč četl. Stáhněte si sešit 2012-16 UD-funkce.xlsm z odkazu na konci článku. Sešit otevřete. Uvidíte zhruba toto:
Jak vidíte na obrázku, uživatel třeba knihu četl, ale při zápisu jejího názvu udělal překlep, nebo si název trochu spletl. Takové chybky předseda toleruje a naše nová funkce JeJako by uměla vyhodnotit první dva názvy jako správné. Nicméně třetí kniha by už s naší jednoduchou funkcí dopadla špatně. Předvedeme si to na listu Ladění:
Pomíjíme v rámci ladění skutečnost, že uživatel by pravděpodobně napsal názvy knih v jiném pořadí, než je vedeme v našem seznamu. Nejprve potřebujeme, aby vůbec funkce fungovala pro jeden případ. Soustředíme se tedy na román „Na stavbě čínské zdi“.
V prvním z dílů o uživatelských funkcích jsme pracovali s VBA funkcí Split, jejíž pomocí jsme rozdělili větu do jednotlivých slov. Použili jsme ji ve funkci:
Funkce Kontrola_Diagnozy1 se nám však ve své současné podobě přímo nehodí. Nicméně její kopii použijeme jako základ pro funkci, která nám název převede do jednotlivých slov. Ta pak budeme podle plánu porovnávat pomocí funkce JeJako. Nastavíme se v Excelu na buňku s názvem románu s čínskou zdí, aby testovací funkce měla k dispozici potřebnou hodnotu, a máme:
…