Formuła programu Excel: indeksuj i dopasowuj w wielu kolumnach -

Formuła ogólna

(=INDEX(rng1,MATCH(1,MMULT(--(rng2=critera),TRANSPOSE(COLUMN(rng2)^0)),0)))

Podsumowanie

Aby wyszukać wartość przez dopasowanie w wielu kolumnach, możesz użyć formuły tablicowej opartej na MMULT, TRANSPOSE, COLUMN i INDEX. W pokazanym przykładzie formuła w H4 to:

(=INDEX(groups,MATCH(1,MMULT(--(names=G4),TRANSPOSE(COLUMN(names)^0)),0)))

gdzie „nazwy” to nazwany zakres C4: E7, a „grupy” to nazwany zakres B4: B7. Formuła zwraca grupę, do której należy każda nazwa.

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

Wyjaśnienie

Działając od wewnątrz, logiczne kryteria użyte w tej formule to:

--(names=G4)

gdzie nazwy to nazwany zakres C4: E7. To generuje wynik PRAWDA / FAŁSZ dla każdej wartości w danych, a podwójna ujemna wartość przekształca wartości PRAWDA FAŁSZ na 1 i 0, aby uzyskać taką tablicę:

(0,0,0;1,0,0;0,0,0;0,0,0)

Ta tablica ma 4 wiersze na 3 kolumny, odpowiadające strukturze „nazw”.

Druga tablica jest tworzona za pomocą tego wyrażenia:

TRANSPOSE(COLUMN(names)^0))

Funkcja COLUMN służy do tworzenia tablicy liczbowej z 3 kolumnami i 1 wierszem, a TRANSPOSE konwertuje tę tablicę na 1 kolumnę i 3 wiersze. Podniesienie do potęgi zera po prostu przekształca wszystkie liczby w tablicy na 1. Następnie funkcja MMULT jest używana do wykonywania mnożenia macierzy:

MMULT((0,0,0;1,0,0;0,0,0;0,0,0),(1;1;1))

a wynik przechodzi do funkcji MATCH jako tablica, z 1 jako wartością wyszukiwania:

MATCH(1,(0;1;0;0),0)

Funkcja PODAJ.POZYCJĘ zwraca pozycję pierwszego dopasowania, która odpowiada wierszowi pierwszego zgodnego wiersza spełniającego podane kryteria. To jest wprowadzane do INDEKSU jako numer wiersza, z nazwanym zakresem „grupy” jako tablicą:

=INDEX(groups,2)

Wreszcie INDEKS zwraca „Niedźwiedź”, grupę, do której należy Adam.

Dosłowne zawiera kryteria

Aby sprawdzić określone wartości tekstowe zamiast dokładnego dopasowania, możesz użyć jednocześnie funkcji ISNUMBER i SEARCH. Na przykład, aby dopasować komórki zawierające słowo „jabłko”, możesz użyć:

=ISNUMBER(SEARCH("apple",data))

Ta formuła została wyjaśniona tutaj.

Dobre linki

Odpowiedź Stackoverflow autorstwa XOR LX

Interesujące artykuły...