Екцел формула: Преглед последње ревизије датотеке -

Преглед садржаја

Генеричка формула

(=MAX(IF(ISERROR(SEARCH(H5&"*",files)),0,ROW(files)-ROW(INDEX(files,1,1))+1)))

Резиме

Да бисте пронашли положај (ред) последње ревизије датотеке у табели, можете користити формулу засновану на неколико Екцел функција: МАКС, ИФ, ИСЕРРОР, РОВ и ИНДЕКС.

У приказаном примеру, формула у ћелији Х6 је:

(= МАКС (АКО (ИСЕРРОР (ПРЕТРАГА (Х5 & "*", датотеке)), 0, РЕД (датотеке) -РЕД (ИНДЕКС (датотеке, 1,1)) + 1)))

где је „датотеке“ именовани опсег Ц4: Ц11.

Напомена: ово је формула низа и мора се унети са цонтрол + схифт + ентер.

Контекст

У овом примеру имамо низ верзија датотека наведених у табели са датумом и корисничким именом. Имајте на уму да се имена датотека понављају, осим кода који је додат на крају да представља верзију („ЦА“, „ЦБ“, „ЦЦ“, „ЦД“ итд.).

За дату датотеку желимо да пронађемо позицију (број реда) за последњу ревизију. Ово је зезнут проблем, јер кодови верзија на крају имена датотека отежавају подударање имена датотеке. Такође, подразумевано ће Екцел формуле подударања вратити прво подударање, а не последње подударање, тако да морамо да заобиђемо тај изазов неким незгодним техникама.

Објашњење

У основи ове формуле градимо листу бројева редова за дату датотеку. Тада користимо функцију МАКС да бисмо добили највећи број реда, који одговара последњој ревизији (последњем појављивању) те датотеке.

Да бисмо пронашли све појаве дате датотеке, користимо функцију СЕАРЦХ (Конфигурисање) са звездицом (*) да одговара називу датотеке, занемарујући кодове верзије. СЕАРЦХ ће бацити вредност ВАЛУЕ када текст није пронађен, па претрагу премотавамо у ИСЕРРОР:

ISERROR(SEARCH(H5&"*",files))

Резултат тога је низ ТРУЕ и ФАЛСЕ вредности попут ове:

(НЕТОЧНО; ИСТИНИТО; НЕТОЧНО; НЕТОЧНО; ТАЧНО; ИСТИНО; НЕТОЧНО; ИСТИНИТО)

Збуњујуће је, али ТРУЕ представља грешку (текст није пронађен), а ФАЛСЕ представља подударање. Овај резултат низа се уноси у функцију ИФ као логички тест. За вредност иф ТРУЕ користимо нулу, а за валуе иф труе испоручујемо овај код који генерише релативне бројеве редова за опсег са којим радимо:

ROW(files)-ROW(INDEX(files,1,1))+1)

Функција ИФ тада враћа низ вредности попут ове:

(1; 0; 3; 4; 0; 0; 7; 0)

Сви бројеви осим нуле представљају подударања за „филенаме1“ - тј. Број реда унутар именованог опсега „филес“ где се појављује „филенаме1“.

Коначно, користимо функцију МАКС да бисмо добили максималну вредност у овом низу, која је 7 у овом примеру.

Користите ИНДЕКС са овим бројем реда да бисте преузели информације повезане са последњом ревизијом (тј. Пуно име датотеке, датум, корисник итд.).

Без именованог домета

Именовани опсези омогућавају брзо и лако постављање сложенијих формула, јер не морате ручно да уносите адресе ћелија. Међутим, у овом случају користимо додатну функцију (ИНДЕКС) да бисмо добили прву ћелију именованог опсега „датотеке“, што мало компликује ствари. Без именованог опсега, формула изгледа овако:

(=MAX(IF(ISERROR(SEARCH(H5&"*",C4:C11)),0,ROW(C4:C11)-ROW(C4)+1)))

Занимљиви Чланци...