
Генеричка формула
=LOOKUP(2,1/(ISNUMBER(FIND(filename,range))),range)
Резиме
Да бисте потражили најновију верзију датотеке на листи, можете користити формулу засновану на функцији ЛООКУП заједно са функцијама ИСНУМБЕР и ФИНД. У приказаном примеру, формула у ћелији Г7 је:
=LOOKUP(2,1/(ISNUMBER(FIND(G6,files))),files)
при чему је „датотеке“ именовани опсег Б5: Б11.
Контекст
У овом примеру имамо низ верзија датотека наведених у табели са датумом и корисничким именом. Имајте на уму да се имена датотека понављају са бројачем на крају као ревизијски број - 001, 002, 003 итд.
С обзиром на име датотеке, желимо да дохватимо име последње или најновије ревизије. Два су изазова:
- Изазов су кодови верзија на крају имена датотека који отежавају подударање назива датотеке.
- Подразумевано, Екцел формуле подударања враћају прво подударање, а не последње подударање.
Да бисмо превазишли ове изазове, морамо да користимо неке шкакљиве технике.
Објашњење
Ова формула користи функцију ЛООКУП за проналажење и проналажење последњег одговарајућег имена датотеке. Вредност претраживања је 2, а лоокуп_вецтор се креира са овим:
1/(ISNUMBER(FIND(G6,files)))
Унутар овог исечка, функција ФИНД тражи вредност у Г6 унутар именованог опсега „датотеке“ (Б5: Б11). Резултат је низ попут овог:
(1;#VALUE!;1;1;#VALUE!;#VALUE!;1)
Овде број 1 представља подударање, а грешка #ВАЛУЕ представља име датотеке која се не подудара. Овај низ прелази у функцију ИСНУМБЕР и излази овако:
(TRUE;FALSE;TRUE;TRUE;FALSE;FALSE;TRUE)
Вредности грешака су сада ФАЛСЕ, а број 1 је сада ТРУЕ. Ово превазилази изазов бр. 1, сада имамо низ који јасно показује које датотеке на листи садрже име датотеке која вас занима.
Даље, низ се користи као називник са 1 као бројилац. Резултат изгледа овако:
(1;#DIV/0!;1;1;#DIV/0!;#DIV/0!;1)
који улази у ЛООКУП као лоокуп_вецтор. Ово је лукаво решење за изазов бр. 2. Функција ЛООКУП ради само у режиму приближног подударања и аутоматски занемарује вредности грешака. То значи да ће са вредношћу 2 као вредност, ВЛООКУП покушати да пронађе 2, не успе и врати се на претходни број (у овом случају одговара последњем 1 на положају 7). Коначно, ЛООКУП користи 7 попут индекса да би преузео 7. датотеку са листе датотека.
Руковање празним претрагама
Чудно, функција ФИНД враћа 1 ако је вредност претраживања празан низ (""). Да бисте се заштитили од лажног поклапања, формулу можете умотати у ИФ и тестирати на празно тражење:
=IF(G6"",LOOKUP(2,1/(ISNUMBER(FIND(G6,files))),files),"")