W poszukiwaniu wartości najbliższej

by Marcin on Styczeń 3, 2009

Dzisiaj będziemy poszukiwać komórki z wartością najbliższą jakiejś wybranej przez użytkownika liczbie (mniejszej, większej, równej – bez znaczenia. Ważne, aby była jak najbliższa wartości poszukiwanej).

Zaczniemy od prostej tabelki, w której mam listę imion oraz odpowiadających im punktów.

Excel - Poszukiwanie najbliższej wartości

Chciałbym, aby Excel zwrócił mi liczbę punktów najbliższą liczbie wpisanej do innej komórki skoroszytu oraz imię odpowiadające tej liczbie punktów.

Excel - Poszukiwanie najbliższej wartości

Rozwiązanie jest zupełnie proste.

Jeden z prostszych sposobów na rozwiązanie problemu to wykorzystanie kolumny pomocniczej. W komórkach tej kolumny znajdzie się wartość bezwzględna różnicy poszukiwanej wartości oraz liczby punktów z listy.

=MODUŁ.LICZBY($K$7-E19)

Rozwiązanie naszego problemu znajdzie się oczywiście w wierszu, w którym ta wartość jest najmniejsza.

Excel - Poszukiwanie najbliższej wartości

W celu wybranie odpowiedniej wartości oraz odpowiadającego jej imienia wystarczy użyć, odpowiednio, funkcji:

=INDEKS(E19:E37;PODAJ.POZYCJĘ(MIN(G19:G37);G19:G37;0))

oraz

=INDEKS(D19:D37;PODAJ.POZYCJĘ(MIN(G19:G37);G19:G37;0))

Gdzie kolumna “G” to nasza kolumna pomocnicza, a kolumna „D” to kolumna z imionami. Od razu dodam (dla porządku), że kolumna „E” to kolumna z liczbą punktów.

Rozwiązanie „hardcore” z wykorzystaniem formuł tablicowych (dla zapaleńców oraz tych, którzy chcą sobie po prostu przetrenować formuły tablicowe)

Wyszukanie odpowiedniej wartości

{=INDEKS(E19:E37;PODAJ.POZYCJĘ(PRAWDA;(MODUŁ.LICZBY($L$7-E19:E37)=MIN(MODUŁ.LICZBY($L$7-E19:E37)));0))}

oraz odpowiadającego jej imienia:

{=INDEKS(D19:D37;PODAJ.POZYCJĘ(PRAWDA;(MODUŁ.LICZBY($L$7-E19:E37)=MIN(MODUŁ.LICZBY($L$7-E19:E37)));0))}

Co zrobić, jeżeli liczba zdobytych punktów się powtarza?

noaccess Rejestracja Zaloguj sie

{ 4 comments… read them below or add one }

eizo Styczeń 31, 2009 o 10:41 pm

Marcin jesteś WIELKI!
Chciałbym kiedyś zaznajomić się z Excelem tak jak Ty, mam nadzieję że niedługo znajdę trochę czasu i zgłębię Twoje wszystkie wpisy, bo naprawdę warto. Lubię Excela to bardzo przydatny program :)

krzysiek Maj 3, 2009 o 6:51 pm

podziwiam & dzięki za wysiłek! blog WYJĄTKOWO pożyteczny!

pozdro
krzysiek

m00ka Styczeń 22, 2010 o 11:40 am

A mając poszukiwaną wartość 9? a w wynikach jest 8 i 11. To jak zrobić żeby zwracało tą większą wartość od zadanej (czyli 11)

Marcin Styczeń 23, 2010 o 12:24 am

@m00ka
W takim przypadku nie wiem czy nie najprościej byłoby posortować sobie rosnąco tabelę z danymi, które chcesz przeszukiwać i skorzystać z funkcji PODAJ.POZYCJĘ z parametrem -1 ustawionym jako typ porównania. Jeżeli połączysz to sobie z funkcją INKEKS to w rezultacie otrzymasz zawsze wartośc większą od zadanej

Marcin

Leave a Comment