Formuła programu Excel: Wyodrębnij wszystkie częściowe dopasowania -

Formuła ogólna

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

Podsumowanie

Aby wyodrębnić wszystkie dopasowania na podstawie częściowego dopasowania, możesz użyć formuły tablicowej opartej na funkcjach INDEKS i AGREGUJ, z obsługą ISNUMBER i SEARCH. W pokazanym przykładzie formuła w G5 to:

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

z następującymi nazwanymi zakresami: „search” = D5, „ct” = D8, „data” = B5: B55.

Uwaga: to jest formuła tablicowa, ale nie wymaga Control + Shift + Enter, ponieważ AGREGATUJ może natywnie obsługiwać tablice.

Wyjaśnienie

Rdzeniem tej formuły jest funkcja INDEKS, a AGREGACJA służy do obliczenia „n-tego dopasowania” dla każdego wiersza w obszarze wyodrębniania:

INDEX(data,nth_match_formula)

Prawie cała praca polega na ustalaniu i raportowaniu, które wiersze w „danych” pasują do szukanego ciągu, oraz na zgłaszaniu pozycji każdej pasującej wartości do INDEKSU. Odbywa się to za pomocą funkcji AGREGUJ skonfigurowanej w następujący sposób:

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

Pierwszy argument, 15, mówi AGGREGATE, aby zachowywał się jak SMALL i zwracał n-tą najmniejszą wartość. Drugi argument, 6, to opcja ignorowania błędów. Trzeci argument to wyrażenie, które generuje tablicę pasujących wyników (opisanych poniżej). Czwarty argument, F5, działa jak „k” w SMALL, określając „n-tą” wartość.

AGGREGATE działa na tablicach, a poniższe wyrażenie buduje tablicę dla trzeciego argumentu wewnątrz AGGREGATE:

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

Tutaj funkcja WIERSZ jest używana do generowania tablicy względnych numerów wierszy, a ISNUMBER i SEARCH są używane razem w celu dopasowania szukanego ciągu do wartości w danych, co generuje tablicę wartości PRAWDA i FAŁSZ.

Sprytnym rozwiązaniem jest podzielenie numerów wierszy przez wyniki wyszukiwania. W takiej operacji matematycznej TRUE zachowuje się jak 1, a FALSE jak zero. W rezultacie numery wierszy powiązane z dodatnim dopasowaniem są dzielone przez 1 i przetrwają operację, podczas gdy numery wierszy powiązane z niepasującymi wartościami są niszczone i stają się błędami # DIV / 0. Ponieważ AGGREGATE ma ignorować błędy, ignoruje błędy # DIV / 0 i zwraca „n-tą” najmniejszą liczbę spośród pozostałych wartości, używając liczby z kolumny F zamiast „nth”.

Zarządzanie wydajnością

Podobnie jak wszystkie formuły tablicowe, ta formuła jest „droga” pod względem zasobów z dużym zestawem danych. Aby zminimalizować wpływ na wydajność, cała formuła INDEKSU i DOPASUJ jest opakowana w JEŚLI w następujący sposób:

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

gdzie nazwany zakres „ct” (D8) zawiera następującą formułę:

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

To sprawdzenie zatrzymuje działanie części INDEKS i AGREGACJA formuły po wyodrębnieniu wszystkich pasujących wartości.

Formuła tablicowa z SMALL

Jeśli Twoja wersja programu Excel nie ma funkcji AGREGUJ, możesz użyć alternatywnej formuły opartej na MAŁY i JEŻELI:

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

Uwaga: to jest formuła tablicowa i należy ją wprowadzić za pomocą Ctrl + Shift + Enter.

Interesujące artykuły...