Excel formula: Izdvoji sva djelomična podudaranja -

Generička formula

=IF(F5>ct,"",INDEX(data,AGGREGATE(15,6,(ROW(data)-ROW($B$5)+1)/ISNUMBER(SEARCH(search,data)),F5)))

Sažetak

Da biste izdvojili sva podudaranja na temelju djelomičnog podudaranja, možete upotrijebiti formulu niza koja se temelji na funkcijama INDEX i AGGREGATE, uz podršku od BROJ i SEARCH. U prikazanom primjeru formula u G5 je:

=IF(F5>ct,"",INDEX(data,AGGREGATE(15,6,(ROW(data)-ROW($B$5)+1)/ISNUMBER(SEARCH(search,data)),F5)))

sa sljedećim imenovanim rasponima: "search" = D5, "ct" = D8, "data" = B5: B55.

Napomena: ovo je formula niza, ali ne zahtijeva control + shift + enter, jer AGGREGATE može nativno obrađivati ​​nizove.

Obrazloženje

Jezgra ove formule je funkcija INDEX, a AGREGATE se koristi za utvrđivanje "n-tog podudaranja" za svaki redak u području izdvajanja:

INDEX(data,nth_match_formula)

Gotovo sav posao sastoji se u pronalaženju i izvještavanju koji se retci u "podacima" podudaraju s nizom pretraživanja, te izvještavanju o položaju za svaku podudarnu vrijednost u INDEX. To se radi s AGGREGATE funkcijom konfiguriranom ovako:

AGGREGATE(15,6,(ROW(data)-ROW($B$5)+1)/ISNUMBER(SEARCH(search,data)),F5)

Prvi argument, 15, govori AGREGATE da se ponaša MALO i vraća n-te najmanje vrijednosti. Drugi argument, 6, opcija je zanemarivanja pogrešaka. Treći je argument izraz koji generira niz rezultata koji se podudaraju (opisano u nastavku). Četvrti argument, F5, djeluje poput "k" u MALOM kako bi odredio vrijednost "n-e".

AGGREGATE djeluje na nizovima, a donji izraz gradi niz za treći argument unutar AGGREGATE:

(ROW(data)-ROW($B$5)+1)/ISNUMBER(SEARCH(search,data))

Ovdje se funkcija ROW koristi za generiranje niza relativnih brojeva redaka, a ISNUMBER i SEARCH koriste se zajedno za podudaranje niza pretraživanja sa vrijednostima u podacima, što generira niz TRUE i FALSE vrijednosti.

Pametna bit je dijeljenje brojeva redaka prema rezultatima pretraživanja. U ovakvoj matematičkoj operaciji TRUE se ponaša kao 1, a FALSE kao nula. Rezultat su brojevi redaka povezani s pozitivnim podudaranjem podijeljeni s 1 i preživljavaju operaciju, dok su brojevi redaka povezani s nepodudarajućim vrijednostima uništeni i postali # DIV / 0 pogreške. Budući da je AGGREGATE postavljen tako da ignorira pogreške, on zanemaruje greške # DIV / 0 i vraća "n-ti" najmanji broj u preostalim vrijednostima, koristeći broj u stupcu F za "nth".

Upravljanje izvedbom

Kao i sve formule niza, i ova je formula "skupa" u smislu resursa s velikim nizom podataka. Da bi se utjecaji na izvedbu sveli na minimum, cijela formula INDEX i MATCH umotana je u IF ovako:

=IF(F5>ct,"",formula)

gdje imenovani raspon "ct" (D8) sadrži ovu formulu:

=COUNTIF(data,"*"&search&"*")

Ova provjera zaustavlja pokretanje INDEX-a i AGREGATE-a dijela formule nakon što su izvučene sve odgovarajuće vrijednosti.

Formula niza s MALIM

Ako vaša verzija Excela nema funkciju AGREGATE, možete upotrijebiti alternativnu formulu koja se temelji na SMALL i IF:

=IF(F5>ct,"",INDEX(data,SMALL(IF(ISNUMBER(SEARCH(search,data)),ROW(data)-ROW($B$5)+1),F5)))

Napomena: ovo je formula niza i mora se unijeti sa control + shift + enter.

Zanimljivi članci...