usto-excel

блог об Excel и не только

Html

Получение всех значений строки с помощью функций ИНДЕКС()+ПОИСКПОЗ()

Комментариев нет :

ЗАДАЧА

Дана таблица (файл книги с примером) следующего вида:



В таблице указаны Код товара и цена за товар у каждого из трёх поставщиков.
Требуется создать формулу для нахождения минимальной из предложенных поставщиками цен, за любой выбранный пользователем товар.


РЕШЕНИЕ

Само по себе нахождение минимального значения из диапазона данных не представляет сложности. Например, нижеследующая формула вернёт нам минимальное значение из списка:
=МИН(121;289;165)
Но как получить этот список значений из для любого, выбранного пользователем товара?
Для этого воспользуемся связкой функций ИНДЕКС()+ПОИСПОЗ().

Чтобы понять как работает эта формула, выделем её в строке формул и будем вычислять по частям с помощью клавиши F9.
Прежде всего, обратите внимание на следующую часть формулы:
ПОИСКПОЗ(G3;B3:B10;0)
Функция ПОИСКПОЗ() находит позицию указанного пользователем товара (ячейка G3) в столбце "Код товара" в основной таблице (диапазон B3:B10). Выделим данную часть формулы и нажмём F9:

Формула вычислила позицию товара в столбце "Код товара". То есть товар с кодом "А6" находится в шестой строке столбца "Код товара".
Перейдём к следующей части формулы:
ИНДЕКС(C3:E10;6;0)
В этой части скрыт наш главный секрет. Дело в том, что функция ИНДЕКС() возвращает значения находящиеся на пересечении указанных строк и столбцов. Так если бы вместо нуля мы указали цифру 1, то формула вернула бы нам значение находящееся на пересечении 6 строки (товар А6) и 1 столбца (Поставщик1) в диапазоне C3:E10. Но так как мы не указываем какой именно столбец нам нужен, то функция ИНДЕКС() возвращает нам значения всех ячеек указанной строки.