Muszę wyprowadzać wyniki z kolumny posortowanych danych z jednym kryterium wyszukiwania. Czasami występuje wiele wystąpień dla tego samego kryterium. WYSZUKAJ, znajduje tylko pierwsze wystąpienie. Muszę wprowadzić komórkę, aby dopasować, jest w J8: J581, a odpowiednie dane do wyświetlenia to N8: N581
J K L M N
bob RED
bob BLUE
Bob Green
Sue yellow
Sue white
fred grey
pete brown
.
input=bob
output= bob RED
BLUE
Green
źródło
Załóżmy, że twoja komórka wejściowa to A1, a komórki wyjściowe to A3 dla nazwy i B3: B .. dla zakresu wyjściowego (z końcem zakresu B zmniejszającym się aż do maksymalnej liczby wyników, których oczekujesz) .
W przypadku A3 wpisz wzór
=A1
.W przypadku B3 wstaw wzór
Jest to formuła tablicy i musi być wprowadzony z Control- Shift- Enterkombinacji klucza. Następnie możesz skopiować go na dół zakresu wyjściowego.
Należy pamiętać, że formuła jest zakodowana na stałe dla listy danych wejściowych z maksymalnie 99 wierszami. Możesz zmienić to na dowolną potrzebną długość. Chociaż byłoby możliwe odniesienie do całej kolumny (J: J i N: N), byłby to wzrost wydajności, którego prawdopodobnie chcesz uniknąć.
Jak działa formuła
Pracując od wewnątrz, formuła najpierw porównuje nazwę, dla której ma zostać przeprowadzone wyszukiwanie (komórka A3) z pełną listą nazw (do 99 nazw w zakresie J1: J99). Porównanie to pokazano w wierszu 6 funkcji podziału pokazanej poniżej.
Produktem tego porównania jest tablica z wartościami True dla dopasowania i False dla niezgodnych, np. {False, False, False, False, True, True, False, ... itd.}.
Następnie dokonuje się porównania między tą tablicą a tablicą, którą można traktować jako „numery linii” listy nazw: {1, 2, 3, 4, 5, 6, ... 99}. Tego porównania dokonuje się za pomocą instrukcji IF w wierszach 6-8 schematu formuły.
Porównanie jest element po elemencie. Jeśli element tablicy porównania nazw ma wartość True, wówczas IF zwraca odpowiedni numer wiersza; jeśli element jest równy False, IF zwraca FAŁSZ. Korzystając z dwóch przykładowych tablic powyżej, wynikiem instrukcji IF byłoby {False, False, False, False, 4, 5, False, ...}.
Kontynuując, funkcja SMALL (zaczynająca się od linii 8 zarysu funkcji) jest używana do uzyskania k-tego najmniejszego elementu tej nowej tablicy z IF. „K” w tym przypadku jest dostarczane przez wyrażenie ROWS ($ N $ 1: $ N1), które po prostu policzy w górę od 1 do 99, gdy cała formuła zostanie skopiowana od wiersza 1 do wiersza 99 (ROWS ($ N $ 1 : $ N1) = 1, ROWS ($ N $ 1: $ N2) = 2 i tak dalej).
Zatem SMALL najpierw znajdzie najmniejszy element tablicy wygenerowany przez IF, ignorując elementy, które są fałszywe. Innymi słowy, zwróci numer pierwszego wiersza, w którym porównywana nazwa odpowiada nazwie na liście wyszukiwania nazw. W naszym przykładzie jest to liczba 4, jak pokazano w szóstej kolumnie poniższej tabeli.
Krok podsumowania wykorzystuje INDEKS na wartościach wyszukiwania, aby pobrać element odpowiadający obliczonemu numerowi linii. W takim przypadku czwarty element w przykładzie listy kolorów dla pytania to „żółty”. (IFERROR upewnia się, że puste miejsce jest wyświetlane, gdy formuła nie znajdzie dopasowania.)
Taki był wynik pierwszej kopii pełnej formuły. Po skopiowaniu do następnej komórki, jedyną rzeczą, która zmienia się w obliczeniach, jest wartość „k” dla funkcji SMALL, która przesuwa się do 2. A drugi najmniejszy znaleziony numer linii to 5, co daje wartość „biały”.
źródło