
Obecný vzorec
=LOOKUP(2,1/(ISNUMBER(FIND(filename,range))),range)
souhrn
Chcete-li vyhledat nejnovější verzi souboru v seznamu, můžete použít vzorec založený na funkci VYHLEDAT společně s funkcemi ISNUMBER a FIND. V zobrazeném příkladu je vzorec v buňce G7:
=LOOKUP(2,1/(ISNUMBER(FIND(G6,files))),files)
kde „soubory“ je pojmenovaný rozsah B5: B11.
Kontext
V tomto příkladu máme několik verzí souborů uvedených v tabulce s datem a uživatelským jménem. Všimněte si, že názvy souborů se opakují s počitadlem na konci jako číslo revize - 001, 002, 003 atd.
Vzhledem k názvu souboru chceme načíst název poslední nebo poslední revize. Existují dvě výzvy:
- Úkolem jsou kódy verzí na konci názvů souborů, které znesnadňují shodu názvu souboru.
- Ve výchozím nastavení vrátí vzorce shody aplikace Excel první shodu, nikoli poslední shodu.
K překonání těchto výzev musíme použít některé záludné techniky.
Vysvětlení
Tento vzorec používá funkci VYHLEDAT k vyhledání a načtení posledního shodného názvu souboru. Hodnota vyhledávání je 2 a lookup_vector je vytvořen s tímto:
1/(ISNUMBER(FIND(G6,files)))
Uvnitř tohoto úryvku hledá funkce FIND hodnotu v G6 uvnitř pojmenovaného rozsahu „files“ (B5: B11). Výsledkem je pole jako toto:
(1;#VALUE!;1;1;#VALUE!;#VALUE!;1)
Zde číslo 1 představuje shodu a chyba #HODNOTA představuje neodpovídající název souboru. Toto pole jde do funkce ISNUMBER a vypadá takto:
(TRUE;FALSE;TRUE;TRUE;FALSE;FALSE;TRUE)
Chybové hodnoty jsou nyní NEPRAVDA a číslo 1 je nyní PRAVDA. To překonává výzvu č. 1, nyní máme pole, které jasně ukazuje, které soubory v seznamu obsahují požadovaný název souboru.
Dále se pole používá jako jmenovatel s 1 jako čitatelem. Výsledek vypadá takto:
(1;#DIV/0!;1;1;#DIV/0!;#DIV/0!;1)
který jde do LOOKUP jako lookup_vector. Toto je složité řešení výzvy č. 2. Funkce LOOKUP funguje pouze v režimu přibližné shody a automaticky ignoruje chybové hodnoty. To znamená, že s 2 jako vyhledávací hodnotou se VLOOKUP pokusí najít 2, selže a vrátí se k předchozímu číslu (v tomto případě odpovídá poslední 1 na pozici 7). Nakonec LOOKUP používá 7 jako index k načtení 7. souboru v seznamu souborů.
Zpracování prázdných vyhledávání
Kupodivu funkce FIND vrací 1, pokud je vyhledávací hodnotou prázdný řetězec (""). Chcete-li se chránit před falešnou shodou, můžete zabalit vzorec do IF a otestovat prázdné vyhledávání:
=IF(G6"",LOOKUP(2,1/(ISNUMBER(FIND(G6,files))),files),"")