
rezumat
Pentru a extrage mai multe potriviri în celule separate, în coloane separate, puteți utiliza o formulă matrice bazată pe INDEX și SMALL. În exemplul prezentat, formula din F5 este:
(=IFERROR(INDEX(names,SMALL(IF(groups=$E5,ROW(names)-MIN(ROW(names))+1),COLUMNS($E$5:E5))),""))
Aceasta este o formulă matrice și trebuie introdusă cu Control + Shift + Enter.
După ce introduceți formula în prima celulă, trageți-o în jos și peste pentru a completa celelalte celule.
Explicaţie
Notă: această formulă utilizează două intervale denumite: „nume” se referă la C5: C11 și „grupuri” se referă la B5: B11. Aceste nume sunt definite și în captura de ecran de mai sus.
Esența acestei formule este următoarea: folosim funcția SMALL pentru a genera un număr de rând corespunzător unui „al n-lea meci”. Odată ce avem numărul rândului, îl trecem pur și simplu în funcția de funcție INDEX, care returnează valoarea la acel rând.
Trucul este că SMALL funcționează cu o matrice care este construită dinamic de IF în acest bit:
IF(groups=$E5,ROW(names)-MIN(ROW(names))+1)
Acest fragment testează intervalul numit „grupuri” pentru valoarea din E5. Dacă este găsit, returnează un număr de rând dintr-o matrice de numere de rând relative create cu:
ROW(names)-MIN(ROW(names))+1
Rezultatul final este un tablou care conține numere unde există o potrivire și FALSE unde nu:
(1; FALS; FALS; FALS; FALS; 6; FALS)
Această matrice intră în SMALL. Valoarea k pentru SMALL (nth) provine dintr-un interval de expansiune:
COLUMNS($E$5:E5)
Când este copiat pe tabelul de rezultate, intervalul se extinde, determinând creșterea lui k (nth). Funcția SMALL returnează fiecare număr de rând care se potrivește, care este furnizat funcției INDEX ca rând_num, cu gama numită „nume” ca matrice.
Gestionarea erorilor
Când COLUMNS returnează o valoare pentru k care nu există, SMALL aruncă o eroare #NUM. Acest lucru se întâmplă după ce au avut loc toate meciurile. Pentru a suprima eroarea, înfășurăm formula în funcția IFERROR pentru a prinde erori și a returna un șir gol ("").