Wyszukiwanie – Funkcja Wyszukaj

Przykłady opisane w tej lekcji dostępne są w arkuszu Excela: Wyszukiwanie.xlsx tylko ich samodzielne przerobienie daje gwarancję zapamiętania tej lekcji.

Przykłady dla wszystkich lekcji szkolenia Excel 2013: ExcelSzkolenie.pl Cwiczenia Excel 2013.zip

 

Ta lekcja może być obejrzana lub przeczytana poniżej.

Film wygląda najlepiej jeśli będzie odtwarzany w rozdzielczości 720p HD, rozdzielczość można zmienić dopiero po uruchomieniu filmu klikając na ikonie trybika  która pojawi się w prawym dolnym rogu poniższego ekranu. Po kilku sekundach od zmiany obraz wyostrzy się.

 

 

 

 

 

 

 

Funkcja wyszukaj jest jedną z najbardziej użytecznych funkcji Excela.

Jej działanie zostanie wytłumaczone na kilku prostych przykładach, w których została użyta niewielka ilość danych, w rzeczywistości jednak funkcja ta jest najczęściej używana i najbardziej użyteczna w przypadku pracy z tabelami z ogromną ilością danych.

 

 

Przykład 1.

(Arkusz: ‘Funkcja Wyszukaj 1’)

 

W poniższym przykładzie mamy 2 tabele z danymi dla 20 i 18 produktów, chcielibyśmy wprowadzić ceny z Tabeli 2. do tabeli 1..

 

 

Stajemy w komórce D4 i klikamy symbol funkcji. 

 

 

W oknie ‘Wyszukaj funkcję:’ wpisujemy tekst ‘wyszukaj’, po czym z poniższego okna ‘Wybierz funkcję’ wybieramy ‘WYSZUKAJ.PIONOWO’

 

 

 

Wprowadzamy następujące dane:

W komórkę ‘Szukana_warotść                        wprowadzamy, co będzie wyszukiwanie w tym przykładzie jest to nazwa produktu, czyli komórka B4

W komórkę ‘Tabela_tablica                              wprowadzamy obszar, w którym jest tabela zawierająca dane, które mają być ściągnięte

W komórkę ‘Nr_indeksu_kolumny                   wprowadzamy numer kolumny, w którym są dane, które mają być ściągnięte, tabela 2. ma dwie kolumny, cena jest w drugiej z nich

W komórkę ‘Przeszukiwany_zakres                wprowadzamy 0 dla dokładnego wyszukania, lub 1 dla wyszukania przybliżonego – nie polecam

 

Wprowadzając obszar należy użyć odwołania absolutnego tak, aby przy kopiowaniu funkcji z komórki D4 do poniższych komórek obszar wyszukiwania nie zmieniał się. Jeżeli pod i nad tabelą w której wyszukujemy dane nic się nie znajduje wygodnym rozwiązaniem będzie zaznaczenie całych kolumn, tak jak to zrobiono w poniższym przykładzie.

 

 

Pierwszą kolumną obszaru, w którym dane mają być wyszukiwane, musi być kolumna zawierająca to, po czym wyszukujemy (w naszym przykładzie nazwy produktów), jeżeli układ tabeli jest inny, należy go zmienić przed skorzystaniem z funkcji wyszukaj.

 

Po przeprowadzeniu powyższych operacji i skopiowaniu funkcji z komórki D4 do poniższych komórek, Tabela 1 powinna wyglądać tak jak na poniższym rysunku.

 

 

Ponieważ dwóch produktów w ‘Tabeli 2‘ nie znaleziono, w miejscach tych został wprowadzony symbol błędu: #N/D!

Symbol ten nie wygląda zbyt dobrze, aby był niewidoczny możemy użyć formatowania warunkowego –  co zostało opisane w lekcji Formatowanie Warunkowe.

 

Jeżeli w Tabeli 2 któraś z nazw produktów występowałaby dwukrotnie wyszukana zostanie tylko wartość dla pierwszego z wystąpień, Excel w żaden sposób nie poinformuje nas, że zaszła taka sytuacja.

 

 

 

Przykład 2

(arkusz Funkcja Wyszukaj 2)

 

Przećwiczymy teraz używanie funkcji WYSZUKAJ.PIONOWO na tabeli 1, do której chcielibyśmy dociągnąć ceny ze stycznia i lutego znajdujące się w tabelach 2 i 3.

 

 

Dla produktów ze stycznia argumenty funkcji będą wyglądać tak jak poniżej.

 

 

Funkcje tą kopiujemy do wiersza 24.

 

 

Następnie zmieniamy ostatnią z formuł (komórka E24) tak aby dane były wyszukiwane z tabeli dla lutego.

 

 

Funkcję kopiujemy do końca tabeli.

 

 

 

 

Przykład 3.

(arkusz Funkcja Wyszukaj 3)

 

Po przeanalizowaniu rozwiązania z poprzedniego przykładu możemy się zastanowić czy nie dałoby się zrobić tego szybciej.

W tym przykładzie ponownie wykorzystamy tabele użyte w przykładzie 2.

Pierwszym krokiem będzie upewnienie się że kolejność produktów w tabelach 2 i 3 jest taka sama. Najprościej jest zrobić to wprowadzając np. w komórce ‘L4’ formułę: ‘=G4=J4’  i kopiując ją do końca tabeli 3. Jeżeli wynik dla wszystkich komórek będzie PRAWDĄ możemy przejść do kolejnego kroku, gdyby tak nie było należałoby najpierw doprowadzić do takiej samej kolejności w obu tabelach.

 

 

Jeżeli potraktujemy tabele 2 i 3 jako jedną tabelę, cena w styczniu będzie znajdować się 2 kolumnie takiej tabeli a cena w lutym w 5.

Przed tabelą 1, dopisujemy cyfrę 2 dla wierszy, w których miesiąc to styczeń i cyfrę 5 dla wierszy, w których miesiąc to luty.

Możemy teraz wprowadzić funkcję wyszukaj w komórce E4, tak jak to pokazane na poniższym rysunku.

Funkcja będzie pobierać dane z 2 kolumny, jeżeli w kolumnie A jest 2 i z 5 kolumny, jeżeli w kolumnie A jest 5.

 

 

Po skopiowaniu formuły do poniższych komórek wszystkie koszty zostaną wyszukane.

 

 

Można ominąć konieczność wprowadzania oznaczeń w kolumnie A korzystając z nieco bardziej skomplikowanej funkcji:

=WYSZUKAJ.PIONOWO(B4;G:K;JEŻELI(C4="styczeń";2;5);0)

Funkcja jeżeli dla produktów ze stycznia będzie dawała wynik 2, dla pozostałych produktów będzie dawała wynik 5.

 

 

 

Alternatywne rozwiązanie tego problemu przedstawiłem w przykładzie 8.

 

 

Przykład 4

(arkusz Funkcja Wyszukaj 4)

 

W tym przykładzie musimy wyszukać ceny wg 2 kryteriów: nazwy produktu i miesiąca. Ceny znajdują się w 2 tabelach.

 

Ponieważ funkcja wyszukaj nie daje możliwości wyszukiwania wg wielu kryteriów ani w kilku różnych tabelach na raz, najpierw będziemy musieli zmienić układ danych w tabelach.

 

 

Połączymy tabele 2 i 3 i dodając do niej kolumnę z nazwą odpowiedniego miesiąca, najlepiej, jeśli układ kolumn będzie taki sam jak w tabeli 1.

 

 

Kolejnym krokiem będzie wprowadzenie w kolumnach A i G, sumy kryteriów wg., których chcemy wyszukiwać.

Teksty łączymy posługując się znakiem &.

Kopiujemy tą funkcję do komórek od A4 do A35 i od G4 do G43.

 

 

Zamiast dwóch kryteriów mamy już tylko jedno i możemy użyć funkcji WYSZUKAJ.PIONOWO wprowadzając wartości tak jak na poniższym rysunku. Właściwe ceny zostaną wyszukane.

 

 

Na tej samej zasadzie możemy wyszukiwać dane dla większej ilości kryteriów, które połączymy w jedno kryterium.

Regularnie przygotowywałem kiedyś raport w którym wyszukiwanie pionowe opierało się na 4 połączonych kryteriach. Raport działał szybko i sprawnie.

 

 

 

Przykład 5.

(Arkusz ‘Funkcja Wyszukaj 5’)

 

Analogicznie działa funkcja WYSZUKAJ.POZIOMO z tą tylko różnicą, że zgodnie z nazwą wyszukuje w kolejnych kolumnach a nie w wierszach, jest użyteczna dla tabel, w których dane umieszczone są poziomo.

 

Przećwiczmy ją na poniższym znanym już nam przykładzie, do Tabeli 1 należy dodać ceny produktów znajdujące się w tabeli 2.

 

 

Wszystkie argumenty funkcji WYSZUKAJ.POZIOMO wprowadzamy analogicznie do WYSZUKAJ.PIONOWO, na poniższym rysunku przedstawiono właściwe argumenty dla tego przykładu.

 

 

Po kliknięciu OK kopiujemy funkcję do pozostałych komórek tabeli. Powinniśmy uzyskać rezultat taki jak przedstawiony poniżej.

 

 

 

 

Przykład 6.

Najczęściej występujące problemy

(Arkusz ‘Funkcja Wyszukaj 6’)

 

Dość często zdarza się, że Excel nie znajduje danych, które naszym zdaniem powinny być w tabeli lub też nawet widzimy, że się w niej znajdują.

Wprowadźmy funkcję WYSZUKAJ.PIONOWO w Arkuszu ‘Funkcja Wyszukaj 6’ wg poniższego rysunku.

 

 

Rezultat przedstawiony poniżej z reguły komentowany jest przez użytkowników następująco ‘Jak to nie ma, przecież widzę że są, głupi Excel.’

(Dane, które teoretycznie powinny być znalezione, oznaczono zielonym tłem.)

 

 

Często dane liczbowe są wprowadzone w Excelu jako tekst i zmiana formatu komórki z tekstowego na liczbowy nie załatwia tego problemu.

Zdarza się tak często wtedy gdy dane do Excela są importowane z innego programu lub z Internetu.

Najszybszą metodą jego rozwiązania jest wpisanie 1 w dowolną komórkę, skopiowanie tej komórki i przemnożenie kolumny z liczbami przez tą jedynkę.

 

 

Funkcja WYSZUKAJ.PIONOWO od razu znalazła odpowiednie dane i zostały one wyświetlone w komórkach F4 i F5.

 

 

Wciąż jednak pozostał problem kodów, które nie są liczbą.

W tym przypadku od razu widać gdzie jest produkt, którego poszukujemy, ale w nieuproszczonej tabeli zawierającej kilka, kilkanaście lub kilkadziesiąt tysięcy wierszy należałoby się posłużyć poleceniem Znajdź aby ustalić w której z komórek kolumny B on się znajduje.

 

 

Po znalezieniu odpowiedniego kodu, dokonujemy szczegółowej inspekcji ciągu znaków i odkrywamy, że przed literą F znajduje się zbędna spacja. Po usunięciu spacji funkcja WYSZUKAJ.PIONOWO, znajdzie kod bez problemu.

 

 

 

W drugim przypadku spacja znajdowała się na końcu kodu.

 

 

Użycie polecenia zamień i zamiana wszystkich spacji na ‘nic’ pozwoli nam oczyścić dane.

Przed zamianami należy wybrać zakres aby nie popsuć nagłówków kolumn i ewentualnych innych tekstów.

 

 

Jeżeli występuje najmniejsza różnica w nazwach produktów wyszukiwanie nie powiedzie się, powyżej opisałem tylko te najczęściej spotykane problemy.

 

 

 

Przykład 7.

(Arkusze: ‘Funkcja Wyszukaj 7’, ‘Funkcja Wyszukaj 8’)

 

W tym przykładzie, danymi z tabeli w arkuszu ‘Funkcja Wyszukaj 7’, chcielibyśmy uzupełnić tabelę w arkuszu ‘Funkcja Wyszukaj 8’.

 

 

 

Tabele różnią się strukturą zarówno wierszy jak i kolumn, a chcielibyśmy posłużyć się tylko jedną formułą.

W tabeli z danymi oprócz miesięcy są także kwartały, aby rozwiązać ten problem nad miesiącami w tabeli docelowej wpisujemy w której kolumnie tabeli źródłowej jest każdy z miesięcy.

 

 

Tam gdzie występuje kwartał numeracja ‘przeskakuje’ o jeden.

Następnie wprowadzamy funkcję wyszukującą, gdzie numerem kolumny jest liczba z wiersza drugiego.

 

 

Dodajemy adresowanie absolutne aby formuła była odpowiednia dla wszystkich komórek tabeli.

Tak przygotowaną formułę możemy skopiować na całą tabelę.

Cyfry z wiersza drugiego możemy ukryć zmieniając ich kolor na biały lub ukrywając wiersz.

 

 

 

 

Przykład 8.

(Arkusze: ‘Funkcja Wyszukaj 9’)

 

Ponownie spróbujemy odnaleźć cenę dla produktów w Tabeli 1. Ceny znajdują się w 2 tabelach

 

W przykładzie 3 zaproponowałem rozwiązanie tego problemu gdy kolejność produktów w obu tabelach jest taka sama. Poniższe rozwiązanie będzie dawało poprawne wyniki niezależnie od kolejności produktów.

 

Jeżeli mamy wyszukiwać w kilku tabelach a wybór zależy od jakiegoś parametru, w tym przypadku od miesiąca z kolumny C, a parametr ten przyjmuje tylko kilka wartości, możemy skorzystać z połączenia funkcji WYSZUKAJ.PIONOWO i JEŻELI.

 

=WYSZUKAJ.PIONOWO(B4;JEŻELI(C4="styczeń";G:H;J:K);2;0)

 

Funkcja JEŻELI, gdy w komórce kolumny C jest „styczeń” przyjmie jako wartość wynikową kolumny G:H, w przeciwnym razie kolumny J:H.

Wynik funkcji JEŻELI jest następnie użyty w funkcji WYSZUKAJ.PIONOWO.

 

 

Gdyby parametr miesiąc przyjmował np. 3 wartości należałoby użyć kolejnej funkcji JEŻELI.

Gdyby parametr miał mieć więcej wartości niż 4 nie warto składać wiele funkcji JEŻELI, szybciej będzie przyjąć rozwiązanie zaproponowane w Przykładzie 4 z połączeniem kilku warunków w jeden.

 

 

Przykład 9.

(Arkusze: ‘Funkcja Wyszukaj 10’)

 

Do tej pory używaliśmy funkcji WYSZUKAJ.PIONOWO do wyszukiwania dokładnych wartości.

Funkcji tej można też używać do wyszukiwania wartości w zadanych przedziałach.

 

W takich przypadkach WYSZUKAJ.PIONOWO działa poprawnie wyłącznie gdy lista gdzie szukamy jest posortowana rosnąco.

 

W poniższym przykładzie chcemy ustalić wysokość rabatu na podstawie wartości zamówienia.

Tabela z przedziałami wielkości zamówień i wysokości odpowiadającego im raportu ma 6 pozycji, rabat jest przyznawany jeśli kwota zamówienia wynosi co najmniej tyle co początek danego przedziału w tabeli i nie więcej niż początek kolejnego przedziału.

 

W argumencie funkcji ‘Przeszukiwany_zakres’ wprowadzamy wartość 1, aby Excel znajdował „najlepsze dopasowanie” jak podaje opis funkcji.

 

 

„Najlepsze dopasowanie” nie oznacza najbliższej wartości ale właśnie wartość dla dolnej granicy przedziału.

Dobrze to widać na poniższym przykładzie. Dla kwoty 9 999 zł rabat nadal wynosi 2%, pomimo tego że liczbą znacznie bliższą niż 5 000 zł jest 10 000 zł.

 

 

Chciałbym jeszcze raz podkreślić że funkcja działa poprawnie wyłącznie gdy lista jest posortowana rosnąco.

Poniżej na liście nie posortowanej rosnąco wyszukiwana jest niepoprawna wartość.

 

 

 

Podobny przykład w tym samym arkuszu dotyczy wyszukiwania oceny z kolokwium w zależności od ilości zdobytych punktów.

 

 

 

 

Przykład 10.

(Arkusze: ‘Funkcja Wyszukaj 11’)

 

Funkcja WYSZUKAJ ma tą ogromną przewagę nad WYSZUKAJ.PIONOWO, że może znajdować nie tylko szukaną wartość lub elementy w kolumnach na prawo od niej ale także na lewo lub nawet w tabeli będącej zupełnie gdzie indziej.

 

Funkcja ta należy do nielicznej grupy funkcji, które mają kilka list możliwych do zastosowania argumentów.

Pierwszym krokiem będzie więc wybranie pierwszej z 2 opcji.

 

 

Następnie wprowadzamy argumenty jak poniżej, nazwy produktu szukamy w kolumnie I a cena na której nam zależy jest na lewo od I w kolumnie H.

 

 

Tak przygotowaną formułę kopiujemy w dół.

 

 

Niestety nazwy produktów w tabeli 2 nie były posortowane rosnąco i pomimo tego że ‘produkt 11’ (zaznaczony żółtym tłem) jest w tej tabeli nie został on odnaleziony.

 

Po posortowaniu wg kolumny „produkt” (kolumna I) właściwe ceny dla wszystkich produktów zostały odnalezione.

 

 

 

 

Przykład 11.

(Arkusze: ‘Funkcja Wyszukaj 12’)

 

Wyszukiwanie w pionie i poziomie jednocześnie.

 

W ostatnim przykładzie tej lekcji będziemy wyszukiwać zarówno po wierszach jak i kolumnach.

W górnej tabeli tego arkusza znajdują się dane źródłowe z informacją o ilościach lekarzy odwiedzanych przez przedstawicieli medycznych w 10 regionach i z podziałem na specjalizacje lekarskie.

 

 

Poproszono nas o skopiowanie danych do tabeli która ma inny układ nagłówków zarówno dla wierszy, jak i dla kolumn.

Moglibyśmy skorzystać z 7 funkcji WYSZKUKAJ.PIONOWO, innej dla każdego z regionów. Sortowanie tablicy źródłowej lub docelowej nie wchodzi w grę ponieważ mamy inną ilość zarówno regionów jak i specjalizacji.

 

Użyjemy złożenia funkcji INDEKS i PODAJ POZYCJE

 

Dla funkcji INDEKS wybieramy pierwszą z list argumentów.

 

 

W argumentach funkcji INDEKS wprowadzamy zakres danych źródłowych czyli C4:L8.

 

Numer wiersza zostanie określony przy użyciu funkcji PODAJ.POZYCJĘ której argumenty to: szukamy pierwszej ze specjalizacji która jest w komórce B19 i szukamy jej w liście specjalizacji tabeli źródłowej czyli B4:B8.

 

Numer kolumny także zostanie określony przy użyciu funkcji PODAJ.POZYCJĘ której argumenty to: szukamy pierwszego z regionów, który jest w komórce C18 i szukamy go na liście regionów tabeli źródłowej czyli C3:L3.

 

Funkcja INDEKS poda wartość będącą w 4 kolumnie i 4 wierszu tablicy będącej pierwszym argumentem funkcji.

 

Dodajemy adresowanie absolutne aby formułę można było skopiować do wszystkich komórek tabeli.

 

 

Po skopiowaniu formuły do wszystkich komórek tabeli poprawne dane są znajdowane.

Dla pewności możemy jeszcze sprawdzić przykładową wartość.

 

 

 

 

 

 

Więcej o Wyszukiwaniu można przeczytać w lekcjach: ‘Profesjonalne Raporty’ i ‘Profesjonalne Raporty dla Zaawansowanych’