Как найти ячейку в диапазоне ячеек

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

Описание

В этой статье приведены пошаговые инструкции по поиску данных в таблице (или диапазоне ячеек) с помощью различных встроенных функций Microsoft Excel. Для получения одного и того же результата можно использовать разные формулы.

Создание образца листа

В этой статье используется образец листа для иллюстрации встроенных функций Excel. Рассматривайте пример ссылки на имя из столбца A и возвращает возраст этого человека из столбца C. Чтобы создать этот лист, введите указанные ниже данные в пустой лист Excel.

Введите значение, которое вы хотите найти, в ячейку E2. Вы можете ввести формулу в любую пустую ячейку на том же листе.

A

B

C

D

E

1

Имя

Правитель

Возраст

Поиск значения

2

Анри

501

Плот

Иванов

3

Стэн

201

19

4

Иванов

101

максималь

5

Ларри

301

составляет

Определения терминов

В этой статье для описания встроенных функций Excel используются указанные ниже условия.

Термин

Определение

Пример

Массив таблиц

Вся таблица подстановки

A2: C5

Превышающ

Значение, которое будет найдено в первом столбце аргумента «инфо_таблица».

E2

Просматриваемый_массив
-или-
Лукуп_вектор

Диапазон ячеек, которые содержат возможные значения подстановки.

A2: A5

Номер_столбца

Номер столбца в аргументе инфо_таблица, для которого должно быть возвращено совпадающее значение.

3 (третий столбец в инфо_таблица)

Ресулт_аррай
-или-
Ресулт_вектор

Диапазон, содержащий только одну строку или один столбец. Он должен быть такого же размера, что и просматриваемый_массив или Лукуп_вектор.

C2: C5

Интервальный_просмотр

Логическое значение (истина или ложь). Если указано значение истина или опущено, возвращается приближенное соответствие. Если задано значение FALSE, оно будет искать точное совпадение.

ЛОЖЬ

Топ_целл

Это ссылка, на основе которой вы хотите основать смещение. Топ_целл должен ссылаться на ячейку или диапазон смежных ячеек. В противном случае функция СМЕЩ возвращает #VALUE! значение ошибки #ИМЯ?.

Оффсет_кол

Число столбцов, находящегося слева или справа от которых должна указываться верхняя левая ячейка результата. Например, значение “5” в качестве аргумента Оффсет_кол указывает на то, что верхняя левая ячейка ссылки состоит из пяти столбцов справа от ссылки. Оффсет_кол может быть положительным (то есть справа от начальной ссылки) или отрицательным (то есть слева от начальной ссылки).

Функции

LOOKUP ()

Функция Просмотр находит значение в одной строке или столбце и сопоставляет его со значением в той же позицией в другой строке или столбце.

Ниже приведен пример синтаксиса формулы подСТАНОВКи.

   = Просмотр (искомое_значение; Лукуп_вектор; Ресулт_вектор)


Следующая формула находит возраст Марии на листе “образец”.

   = ПРОСМОТР (E2; A2: A5; C2: C5)

Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в векторе подстановки (столбец A). Формула затем соответствует значению в той же строке в векторе результатов (столбец C). Так как “Мария” находится в строке 4, функция Просмотр возвращает значение из строки 4 в столбце C (22).

Примечание. Для функции Просмотр необходимо, чтобы таблица была отсортирована.

Чтобы получить дополнительные сведения о функции Просмотр , щелкните следующий номер статьи базы знаний Майкрософт:
 

Использование функции Просмотр в Excel

ВПР ()

Функция ВПР или вертикальный просмотр используется, если данные указаны в столбцах. Эта функция выполняет поиск значения в левом столбце и сопоставляет его с данными в указанном столбце в той же строке. Функцию ВПР можно использовать для поиска данных в отсортированных или несортированных таблицах. В следующем примере используется таблица с несортированными данными.

Ниже приведен пример синтаксиса формулы ВПР :

    = ВПР (искомое_значение; инфо_таблица; номер_столбца; интервальный_просмотр)

Следующая формула находит возраст Марии на листе “образец”.

   = ВПР (E2; A2: C5; 3; ЛОЖЬ)

Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в левом столбце (столбец A). Формула затем совпадет со значением в той же строке в Колумн_индекс. В этом примере используется “3” в качестве Колумн_индекс (столбец C). Так как “Мария” находится в строке 4, функция ВПР возвращает значение из строки 4 В столбце C (22).

Чтобы получить дополнительные сведения о функции ВПР , щелкните следующий номер статьи базы знаний Майкрософт:
 

Как найти точное совпадение с помощью функций ВПР или ГПР

INDEX () и MATCH ()

Вы можете использовать функции индекс и ПОИСКПОЗ вместе, чтобы получить те же результаты, что и при использовании поиска или функции ВПР.

Ниже приведен пример синтаксиса, объединяющего индекс и Match для получения одинаковых результатов поиска и ВПР в предыдущих примерах:

    = Индекс (инфо_таблица; MATCH (искомое_значение; просматриваемый_массив; 0); номер_столбца)

Следующая формула находит возраст Марии на листе “образец”.


= ИНДЕКС (A2: C5; MATCH (E2; A2: A5; 0); 3)

Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в столбце A. Затем он будет соответствовать значению в той же строке в столбце C. Так как “Мария” находится в строке 4, формула возвращает значение из строки 4 в столбце C (22).

Обратите внимание Если ни одна из ячеек в аргументе “число” не соответствует искомому значению (“Мария”), эта формула будет возвращать #N/А.
Чтобы получить дополнительные сведения о функции индекс , щелкните следующий номер статьи базы знаний Майкрософт:

Поиск данных в таблице с помощью функции индекс

СМЕЩ () и MATCH ()

Функции СМЕЩ и ПОИСКПОЗ можно использовать вместе, чтобы получить те же результаты, что и функции в предыдущем примере.

Ниже приведен пример синтаксиса, объединяющего смещение и сопоставление для достижения того же результата, что и функция Просмотр и ВПР.

   = СМЕЩЕНИЕ (топ_целл, MATCH (искомое_значение; просматриваемый_массив; 0); Оффсет_кол)

Эта формула находит возраст Марии на листе “образец”.

   = СМЕЩЕНИЕ (A1; MATCH (E2; A2: A5; 0); 2)

Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в столбце A. Формула затем соответствует значению в той же строке, но двум столбцам справа (столбец C). Так как “Мария” находится в столбце A, формула возвращает значение в строке 4 в столбце C (22).

Чтобы получить дополнительные сведения о функции СМЕЩ , щелкните следующий номер статьи базы знаний Майкрософт:
 

Использование функции СМЕЩ

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

Поиск нужных данных в диапазоне

Как использовать функцию ВПР (VLOOKUP) для поиска и выборки нужных значений из списка мы недавно разбирали. Если вы еще с ней не знакомы – загляните сюда, не пожалейте пяти минут, чтобы сэкономить себе потом несколько часов.

Если же вы знакомы с ВПР, то – вдогон – стоит разобраться с похожими функциями: ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH), владение которыми весьма облегчит жизнь любому опытному пользователю Excel. Гляньте на следующий пример:

index1.gif

Необходимо определить регион поставки по артикулу товара, набранному в ячейку C16.

Задача решается при помощи двух функций:

=ИНДЕКС(A1:G13;ПОИСКПОЗ(C16;D1:D13;0);2)

Функция ПОИСКПОЗ ищет в столбце D1:D13 значение артикула из ячейки C16. Последний аргумент функции 0 – означает поиск точного (а не приблизительного) соответствия. Функция выдает порядковый номер найденного значения в диапазоне, т.е. фактически номер строки, где найден требуемыый артикул.

Функция ИНДЕКС выбирает из диапазона A1:G13 значение, находящееся на пересечении заданной строки (номер строки с артикулом выдает функция ПОИСКПОЗ) и столбца (нам нужен регион, т.е. второй столбец). 

Ссылки по теме

  • Использование функции ВПР (VLOOKUP) для поиска и подстановки значений.
  • Улучшенная версия функции ВПР (VLOOKUP)
  • Многоразовый ВПР

В этой заметке речь пойдет об альтернативе функции ВПР в виде связки из двух функций ИНДЕКС и ПОИСКПОЗ.

Поговорим о преимуществах такого решения, разберем работу каждой из функций отдельно и связку функций, для ее использования вместо ВПР.

Итак, поехали.

Преимущества ИНДЕКС и ПОИСКПОЗ

Связка функций ИНДЕКС и ПОИСКПОЗ фактически полностью заменяет функцию ВПР и лишена ее недостатков, которые вытекают из синтаксиса самой функции.

Напомню, что функция ВПР возвращает значение из диапазона, который может находиться только справа от столбца со значениями где происходит поиск. ИНДЕКС и ПОИСКПОЗ могут осуществлять поиск в любом столбце диапазона.

Функция ВПР (красная стрелка вправо), функции ИНДЕКС и ПОИСКПОЗ (желтая стрелка)
Функция ВПР (красная стрелка вправо), функции ИНДЕКС и ПОИСКПОЗ (желтая стрелка)

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

Неразрывный диапазон в аргументах функции ВПР
Неразрывный диапазон в аргументах функции ВПР

Однако при работе с данными может возникнуть необходимость удалить или вставить столбец в рамках ранее выбранного диапазона и тогда функцию ВПР придется корректировать и изменять диапазон.

В формуле с функциями ИНДЕКС и ПОИСКПОЗ указываются конкретные столбцы или только необходимые диапазоны значений, поэтому удаление или добавление столбцов на их работу не оказывает никакого влияния.

Выбор диапазонов при использовании ИНДЕКС и ПОИСКПОЗ
Выбор диапазонов при использовании ИНДЕКС и ПОИСКПОЗ

Ну и для того, чтобы понять работу связки функций ИНДЕКС и ПОИСКПОЗ разберемся с синтаксисом каждой функции отдельно.

Функция ИНДЕКС

Функция ИНДЕКС возвращает значение, которое находится в указанном номере строки выделенного диапазона.

Например, найдем имя «Ольга» в соответствующем столбце.

Найдем положение Ольги в таблице
Найдем положение Ольги в таблице

Первое, что мы указываем – это где будет производиться поиск. Нас будет интересовать только один столбец, поэтому выбираем его.

Выбор диапазона для функции ИНДЕКС
Выбор диапазона для функции ИНДЕКС

Далее мы должны указать номер строки в выделенном диапазоне, из которого будет возвращено значение. Здесь все по аналогии с функцией ВПР – указывается номер строки в выделенном диапазоне, а не номер строки таблицы Excel.

В мое примере это третья строка. Аргументы в квадратных скобках являются необязательными, поэтому их можно не указывать.

Выбор номера строки в выделенном диапазоне. Номер столбца не указываем
Выбор номера строки в выделенном диапазоне. Номер столбца не указываем

Будет возвращено имя Ольга.

Функция ИНДЕКС вернула имя из третьей ячейке выделенного диапазона
Функция ИНДЕКС вернула имя из третьей ячейке выделенного диапазона

Если будет выбран диапазон, состоящий из нескольких столбцов, то нужно будет указать и номер строки, и номер столбца в диапазоне, на пересечении которых находится ячейка с нужным значением.

Например, если мы выделим диапазон со всеми данными и нам нужен будет адрес Ольги, то укажем, что он находится в третьей строке и втором столбце выделенного диапазона.

Использование всех аргументов функции ИНДЕКС
Использование всех аргументов функции ИНДЕКС

Функция ИНДЕКС возвращает нужное нам значение, но в отличии от ВПР координаты этой ячейки приходится задавать вручную. Чтобы автоматизировать процесс воспользуемся функцией ПОИСКПОЗ.


Функция ПОИСКПОЗ

Функция ПОИСКПОЗ производит поиск указанного значения в диапазоне ячеек и возвращает относительную позицию ячейки с искомым значением. То есть фактически эта функция возвращает координаты этой ячейки, а это как раз то, чего не хватает функции ИНДЕКС для полноценной замены функции ВПР.

Например, нам нужно узнать, какие координаты в диапазоне имеет «Ольга». Создадим формулу с функцией ПОИСКПОЗ и введем интересующее нас имя. Напомню, что текст вводится в кавычках.

Указываем функции ПОИСКПОЗ, что именно мы хотим найти
Указываем функции ПОИСКПОЗ, что именно мы хотим найти

Мы указали что искать, а теперь нужно указать где будет производиться поиск – выбираем значения столбца «Имя».

Где искать - второй аргумент функции ПОИСКПОЗ
Где искать – второй аргумент функции ПОИСКПОЗ

Ну и последний аргумент функции ПОИСКПОЗ очень напоминает аналогичный аргумент интервальный просмотр функции ВПР, но он может принимать три значения – меньше, больше и точное совпадение.

Тип сопостовления в функции ПОИСКОПЗ
Тип сопостовления в функции ПОИСКОПЗ

Если речь идет о поиске текстовых данных, то всегда выбираем точное совпадение. Другие параметры актуальны только при работе с числовыми данными. Поэтому указываем ноль и в итоге получаем цифру 3, что соответствует третьей строке в выделенном диапазоне.

Результат работы функции ПОИСКПОЗ
Результат работы функции ПОИСКПОЗ

Ну а теперь объединим функции ИНДЕКС и ПОИСКПОЗ в полноценную замену функции ВПР.

Связка фукнций ИНДЕКС и ПОИСКПОЗ

Давайте найдем телефон Ивана. Создаем формулу с функцией ИНДЕКС.

Так как нам нужен телефон, то искать мы его будем в соответствующем столбце таблицы, поэтому выделяем его. Далее мы должны указать номер строки в этом диапазоне и тут на помощь приходит функция ПОИСКПОЗ. Так как нас интересует телефон Ивана, то мы бы хотели получить номер строки, в которой находится его имя. Указываем, что мы будем искать – имя “Иван”, затем указываем где мы его будем искать – соответствующий диапазон столбца «Имя». Ищем текст, поэтому точное совпадение – 0.

Связка фукнций ИНДЕКС и ПОИСКПОЗ
Связка фукнций ИНДЕКС и ПОИСКПОЗ

Получаем верный результат.

Результат работы ИНДЕКС и ПОИСКПОЗ
Результат работы ИНДЕКС и ПОИСКПОЗ

Формула проделала ровно тоже, с чем легко справится функция ВПР, но давайте решим задачи, которые ВПР не по зубам.

Преимущества ИНДЕКС + ПОИСКПОЗ

Неоспоримым преимуществом связки функций ИНДЕКС и ПОИСКПОЗ перед ВПР является то, что мы можем производить поиск данных влево, что может быть крайне важным при работе с таблицами, имеющими некоторую стандартизированную форму, то есть когда нет возможности поменять столбцы местами.

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

Давайте рассмотрим это на примере, но сначала просто попрактикуемся и подставим цену из прайс-листа с помощью связки функций ИНДЕКС и ПОИСКПОЗ.

В перечень заказов необходимо подставить цену товара и город заказа
В перечень заказов необходимо подставить цену товара и город заказа

Создаем формулу с функцией ИНДЕКС и выбираем диапазон с ценами. Далее подключаем функцию ПОИСКПОЗ и в качестве искомого значения указываем наименование товара. Затем указываем соответствующий диапазон в прайс-листе.

Подстановка цены товара
Подстановка цены товара

Что касается диапазонов, то здесь действует тоже правило, что и при работе с функцией ВПР – если мы планируем копировать формулу по диапазону, то нужно ОБЯЗАТЕЛЬНО фиксировать ссылки, превращая их в абсолютные. Иначе при протягивании формулы диапазон в ней будет «сползать» и функция выдаст ошибку. Поочередно выделяем диапазоны в формуле и нажимаем клавишу F4 для преобразования их ссылок в абсолютные.

В результате формула сработает верно и можно будет рассчитать сумму заказа.

Расчет суммы заказа с использованием подтянутой цены товара
Расчет суммы заказа с использованием подтянутой цены товара

Фактически получили тот же результат, что и с помощью функции ВПР, но теперь давайте подставим город, основываясь на фамилии менеджера. В таблице с филиалами столбец с менеджерами находится правее столбца с городам и поэтому функция ВПР тут бесполезна.

Столбец с менеджерами находится правее столбца с городами
Столбец с менеджерами находится правее столбца с городами

Создаем формулу с функцией ИНДЕКС и указываем столбец с городами, так как именно город нас будет интересовать в конечном итоге. Не забываем фиксировать диапазон. Затем с помощью функции ПОИСКПОЗ находим номер соответствующей строки. Сделать это можно по фамилии менеджера, которая присутствует в обеих таблицах.

Левый ВПР с помощью функций ИНДЕКС и ПОИСКОПЗ
Левый ВПР с помощью функций ИНДЕКС и ПОИСКОПЗ

Получаем нужный результат. При этом если вдруг понадобится добавить столбец в таблицу с филиалами, то данные никуда не денутся, так как они будут привязаны к конкретным столбцам таблицы.

Вставка нового столбца в таблицу не влияет на формулу с ИНДЕКС и ПОИСКПОЗ
Вставка нового столбца в таблицу не влияет на формулу с ИНДЕКС и ПОИСКПОЗ

Это прекрасно видно и из следующего примера.

Меню и два одинаковых чека, посчитанных разными функциями
Меню и два одинаковых чека, посчитанных разными функциями

Здесь у нас есть меню и два одинаковых заказа. Один посчитан с помощью ВПР, второй с помощью ИНДЕКС и ПОИСКПОЗ.

Если меню изменится и в него будет внесен еще один столбец, то расчеты с функцией ВПР будут неверными, так как теперь в них будет участвовать не цена, а вес порции в граммах.

Ошибка в расчетах с помощью функции ВПР
Ошибка в расчетах с помощью функции ВПР

Диапазон в формуле расширился, но номер столбца в аргументах по-прежнему ведет на третий столбец в диапазоне, хотя теперь он уже стал четвертым.

Диапазон в аргументах изменился, а номер столбца нет
Диапазон в аргументах изменился, а номер столбца нет

Тем не менее, во втором чеке все посчитано верно и вставка столбцов никак не повлияла на конечный результат.

Ну и еще одним преимуществом связки функций является то, что мы можем искать не только в столбцах, но и в строках.

Например, стандартная ситуация для многих кафе – напитки имеют различные объемы от чего зависит их цена. Исходные данные – это напиток и его размер. Необходимо найти цену.

Найдем цену по названию и размеру напитка
Найдем цену по названию и размеру напитка

Для этого воспользуемся функцией ИНДЕКС и укажем весь диапазон цен. Ну а для того, чтобы определить координаты конкретной ячейки воспользуемся функцией ПОИСКПОЗ. Причем задействуем ее дважды – для поиска нужной строки по названию напитка и для поиска нужного столбца по его размеру.

Поиск в строках и столбцах
Поиск в строках и столбцах

В итоге получаем верный результат.

Результат расчета
Результат расчета

Ошибки и проблемы

Функции ИНДЕКС и ПОИСКПОЗ делают поиск данных в массиве максимально гибким и позволяют решать задачи, на которые функция ВПР не способна. Но и у этого решения есть особенности, которые нужно учитывать, чтобы не столкнуться с проблемами.

Пожалуй самой распространенной ошибкой, как и в случае с ВПР, являются относительные ссылки в диапазонах.

Относительные ссылки в формуле привели к ошибке Н/Д
Относительные ссылки в формуле привели к ошибке Н/Д

Как я уже упоминал, здесь действует простое правило – если формулу с функциями ИНДЕКС и ПОИСКПОЗ предполагается копировать по диапазону, то обязательно нужно фиксировать ссылки, делая их абсолютными.

Вторая ошибка, с которой вы можете столкнуться – ССЫЛКА!

Ошибка ССЫЛКА!
Ошибка ССЫЛКА!

Связано ее появление с тем, что массивы в функциях ИНДЕКС и ПОИСКПОЗ имеют различные размеры.

Разный размер диапазонов в функциях ИНДЕКС и ПОИСКПОЗ
Разный размер диапазонов в функциях ИНДЕКС и ПОИСКПОЗ

Если искомое значение из одного диапазона выходит за границы второго, то появляется эта ошибка. Стоит проверить соответствие диапазонов и подкорректировать их размеры.

Ну и общая для всех функций просмотра проблема – это производительность или скорость работы. Она заметно падает при обработке значительных массивов данных.

Безусловно, здесь очень многое зависит от десятков или даже сотен факторов, однако в любом случае для ускорения вычислений я бы рекомендовал пользоваться умными таблицами.

Да, не всегда это возможно, но в тех случаях, когда данные могут быть оформлены умными таблицами, всегда используйте их.

Умные таблицы – это очень мощный инструмент Excel, позволяющий значительно ускорить рутинные операции и повысить эффективность вашей работы. И более подробно об умных таблицах я расскажу в следующей заметке.

Skip to content

ИНДЕКС ПОИСКПОЗ как лучшая альтернатива ВПР

В этом руководстве показано, как использовать ИНДЕКС и ПОИСКПОЗ в Excel и чем они лучше ВПР.

В нескольких недавних статьях мы приложили немало усилий, чтобы объяснить основы функции ВПР новичкам и предоставить более сложные примеры формул ВПР опытным пользователям. А теперь я постараюсь если не отговорить вас от использования ВПР, то хотя бы показать вам альтернативный способ поиска нужных значений в Excel.

  • Краткий обзор функций ИНДЕКС и ПОИСКПОЗ
  • Как использовать формулу ИНДЕКС ПОИСКПОЗ
  • ИНДЕКС+ПОИСКПОЗ вместо ВПР?
  • Поиск справа налево
  • Двусторонний поиск в строках и столбцах
  • ИНДЕКС ПОИСКПОЗ для поиска по нескольким условиям
  • Как найти среднее, максимальное и минимальное значение
  • Что делать с ошибками поиска?

Для чего это нужно? Потому что функция ВПР имеет множество ограничений, которые могут помешать вам получить желаемый результат во многих ситуациях. С другой стороны, комбинация ПОИСКПОЗ ИНДЕКС более гибкая и имеет много замечательных возможностей, которые во многих отношениях превосходят ВПР.

Функции Excel ИНДЕКС и ПОИСКПОЗ — основы

Поскольку целью этого руководства является демонстрация альтернативного способа выполнения поиска в Excel с использованием комбинации функций ИНДЕКС и ПОИСКПОЗ, мы не будем подробно останавливаться на их синтаксисе и использовании. Тем более, что это подробно рассмотрено в других статьях, ссылки на которые вы можете найти в конце этого руководства. Мы рассмотрим лишь минимум, необходимый для понимания общей идеи, а затем подробно рассмотрим примеры формул, раскрывающие все преимущества использования ПОИСКПОЗ и ИНДЕКС вместо ВПР.

Функция ИНДЕКС

Функция ИНДЕКС (в английском варианте – INDEX) возвращает значение в массиве на основе указанных вами номеров строк и столбцов. Синтаксис функции ИНДЕКС прост:

ИНДЕКС(массив,номер_строки,[номер_столбца])

Вот простое объяснение каждого параметра:

  • массив – это диапазон ячеек, именованный диапазон или таблица.
  • номер_строки — это номер строки в массиве, из которого нужно вернуть значение. Если этот аргумент опущен, требуется следующий – номер_столбца.
  • номер_столбца — это номер столбца, из которого нужно вернуть значение. Если он опущен, требуется номер_строки.

Дополнительные сведения см. в статье Функция ИНДЕКС в Excel .

А вот пример формулы ИНДЕКС в самом простом виде:

=ИНДЕКС(A1:C10;2;3)

Формула выполняет поиск в ячейках с A1 по C10 и возвращает значение ячейки во 2-й строке и 3-м столбце, т. е. в ячейке C2.

Очень легко, правда? Однако при работе с реальными данными вы вряд ли когда-нибудь будете заранее знать, какие строки и столбцы вам нужны. Здесь вам пригодится ПОИСКПОЗ.

Функция ПОИСКПОЗ

Она ищет нужное значение в диапазоне ячеек и возвращает относительное положение этого значения в диапазоне.

Синтаксис функции ПОИСКПОЗ следующий:

ПОИСКПОЗ(искомое_значение, искомый_массив, [тип_совпадения])

  • искомое_значение — числовое или текстовое значение, которое вы ищете.
  • диапазон_поиска – диапазон ячеек, в которых будем искать.
  • тип_совпадения — указывает, следует ли искать точное соответствие или наиболее близкое совпадение:
    • 1 или опущено — находит наибольшее значение, которое меньше или равно искомому значению. Требуется сортировка массива поиска в порядке возрастания.
    • 0 — находит первое значение, точно равное искомому значению. В комбинации ИНДЕКС/ПОИСКПОЗ вам почти всегда нужно точное совпадение, поэтому вы чаще всего устанавливаете третий аргумент вашей функции в 0.
    • -1 — находит наименьшее значение, которое больше или равно искомому значению. Требуется сортировка массива поиска в порядке убывания.

Например, если диапазон B1:B3 содержит значения «яблоки», «апельсины», «лимоны», приведенная ниже формула возвращает число 3, поскольку «лимоны» — это третья по счету запись в этом диапазоне:

=ПОИСКПОЗ(“лимоны”;B1:B3;0)

Дополнительные сведения см . в статье Функция ПОИСКПОЗ в Excel .

На первый взгляд полезность функции ПОИСКПОЗ может показаться сомнительной. Кого волнует положение значения в диапазоне? Что мы действительно хотим определить, так это само значение.

Однако, относительная позиция искомого значения (т. е. номера строки и столбца, в которых оно находится) — это именно то, что нам нужно указать для аргументов номер_строки и номер_столбца функции ИНДЕКС. Как вы помните, ИНДЕКС может найти значение на пересечении заданной строки и столбца, но сама не может определить, какую именно строку и столбец ей нужно выбрать.

Вот поэтому совместное использование ИНДЕКС и ПОИСКПОЗ открывает перед нами массу возможностей для поиска в Excel.

Как использовать формулу ИНДЕКС ПОИСКПОЗ в Excel

Теперь, когда вы знаете основы, я считаю, что вы уже начали понимать, как ПОИСКПОЗ и ИНДЕКС работают вместе. Короче говоря, ИНДЕКС извлекает нужное значение по номерам столбцов и строк, а ПОИСКПОЗ предоставляет ей эти номера. Вот и все!

Для вертикального поиска вы используете функцию ПОИСКПОЗ только для определения номера строки, указывая диапазон столбцов непосредственно в самой формуле:

ИНДЕКС ( столбец для возврата значения ; ПОИСКПОЗ ( искомое значение ; столбец для поиска ; 0))

Все еще не совсем понимаете эту логику? Возможно, будет проще разобрать на примере. Предположим, у вас есть список национальных столиц и их население:

Чтобы найти население определенной столицы, скажем, Индии, используйте следующую формулу ПОИСКПОЗ ИНДЕКС:

=ИНДЕКС(C2:C10; ПОИСКПОЗ(“Индия”;A2:A10;0))

Теперь давайте проанализируем, что на самом деле делает каждый компонент этой формулы:

  • Функция ПОИСКПОЗ ищет искомое значение “Индия” в диапазоне A2:A10 и возвращает число 2, поскольку это слово занимает второе место в массиве поиска.
  • Этот номер поступает непосредственно в аргумент номер_строки функции ИНДЕКС, предписывая вернуть значение из этой строки.

Таким образом, приведенная выше формула превращается в ИНДЕКС(C2:C10;2), которая означает, что нужно искать в ячейках от C2 до C10 и извлекать значение из второй ячейки в этом диапазоне, то есть из C3, потому что мы начинаем отсчет со второй строки.

Но указывать название города в формуле не совсем правильно, так как для каждого нового поиска придется корректировать эту формулу. Введите его в какую-нибудь отдельную ячейку, скажем, F1, укажите ссылку на ячейку для ПОИСКПОЗ, и вы получите формулу динамического поиска:

=ИНДЕКС(C2:C10;ПОИСКПОЗ(F1;A2:A10;0))

Важное замечаниеКоличество строк в аргументе массив функции ИНДЕКС должно совпадать с количеством строк в аргументе просматриваемый_массив в ПОИСКПОЗ, иначе формула выдаст неверный результат.

Вы спросите: «А почему бы нам просто не использовать обычную формулу ВПР? Какой смысл тратить время на то, чтобы разобраться в хитросплетениях ИНДЕКС ПОИСКПОЗ в Excel?»

Вот как это будет выглядеть:

=ВПР(F1; A2:C10; 3; 0)

Конечно, так проще. Но этот наш элементарный пример предназначен только для демонстрационных целей, чтобы вы поняли, как именно функции ИНДЕКС и ПОИСКПОЗ работают вместе. Действительно, ВПР была бы здесь более уместна. Другие примеры, которые вы найдёте ниже, покажут вам реальную силу этой комбинации, которая легко справляется со многими сложными задачами, когда ВПР будет бессильна.

ИНДЕКС+ПОИСКПОЗ вместо ВПР?

Решая, какую функцию использовать для вертикального поиска, большинство знатоков Excel сходятся во мнении, что ПОИСКПОЗ+ИНДЕКС намного лучше, чем ВПР. Однако многие до сих пор остаются с ВПР, во-первых, потому что это проще, а, во-вторых, потому что они не до конца понимают все преимущества использования формулы ПОИСКПОЗ ИНДЕКС в Excel. Без такого понимания никто не захочет тратить свое время на изучение более сложного синтаксиса.

Ниже я укажу на ключевые преимущества ИНДЕКС ПОИСКПОЗ перед ВПР, а уж вам решать, является ли это достойным дополнением к вашему арсеналу знаний в Excel.

4 основные причины использовать ИНДЕКС ПОИСКПОЗ вместо ВПР

  1. Поиск справа налево. Как известно любому образованному пользователю, ВПР не может искать влево. Это означает, что искомое значение всегда должно находиться в крайнем левом столбце таблицы. А извлекать нужное значение мы будем из столбца, который находится правее. ИНДЕКС+ПОИСКПОЗ может легко выполнять поиск влево! Здесь это показано в действии: Как выполнить поиск значения слева в Excel .
  2. Можно безопасно вставлять или удалять столбцы. Формулы ВПР не работают или выдают неверные результаты, когда новый столбец удаляется из таблицы поиска или добавляется в нее, поскольку синтаксис ВПР требует указания порядкового номера столбца, из которого вы хотите извлечь данные. Естественно, когда вы добавляете или удаляете столбцы, этот номер в формуле автоматически не меняется, а нужный столбец уже оказывается на новом месте.

С функциями ИНДЕКС и ПОИСКПОЗ вы указываете диапазон возвращаемых столбцов, а не номер одного из них. В результате вы можете вставлять и удалять столько столбцов, сколько хотите, не беспокоясь об обновлении каждой связанной с ними формулы.

  1. Нет ограничений на размер искомого значения. При использовании функции ВПР общая длина ваших критериев поиска не может превышать 255 символов, иначе вы получите ошибку #ЗНАЧ!. Таким образом, если ваш набор данных содержит длинные строки, ИНДЕКС ПОИСКПОЗ — единственное работающее решение.
  2. Более высокая скорость обработки. Если ваши таблицы относительно небольшие, вряд ли будет какая-то существенная разница в производительности Excel. Но если ваши рабочие листы содержат сотни или тысячи строк и, следовательно, сотни или тысячи формул, ИНДЕКС ПОИСКПОЗ будет работать намного быстрее, чем ВПР. Причина в том, что Excel будет обрабатывать только столбцы поиска и возврата, а не весь массив таблицы.

Влияние ВПР на производительность Excel может быть особенно заметным, если ваша книга содержит сложные формулы массива. Чем больше значений содержит ваш массив и чем больше формул массива содержится в книге, тем медленнее работает Excel.

ИНДЕКС ПОИСКПОЗ в Excel – примеры формул

Уяснив, почему все же стоит изучать ИНДЕКС ПОИСКПОЗ, давайте перейдем к самому интересному и посмотрим, как можно применить теоретические знания на практике.

Формула для поиска справа налево

Как уже упоминалось, ВПР не может получать значения слева от столбца поиска. Таким образом, если ваши значения поиска не находятся в самом левом столбце, нет никаких шансов, что формула ВПР принесет вам желаемый результат. Функция ПОИСКПОЗ ИНДЕКС в Excel более универсальна и не имеет особого значения, где расположены столбцы поиска и возврата.

Для этого примера мы добавим столбец «Ранг» слева от нашей основной таблицы и попытаемся выяснить, какое место занимает столица России по численности населения среди других перечисленных  столиц.

Записав искомое значение в G1, используйте следующую формулу для поиска в C2:C10 и возврата соответствующего значения из A2:A10:

=ИНДЕКС(A2:A10; ПОИСКПОЗ(G1;C2:C10;0))

СоветЕсли вы планируете использовать формулу ПОИСКПОЗ ИНДЕКС более чем для одной ячейки, обязательно зафиксируйте оба диапазона абсолютными ссылками  (например, $A$2:$A$10 и $C$2:$C$10), чтобы они не изменялись при копировании формулы.

Двусторонний поиск в строках и столбцах

В приведенных выше примерах мы использовали ИНДЕКС ПОИСКПОЗ вместо классической функции ВПР, чтобы вернуть значение из точно указанного столбца. Но что, если вам нужно искать в нескольких строках и столбцах? То есть, сначала нужно найти подходящий столбец, а уж потом извлечь из него значение? Другими словами, что, если вы хотите выполнить так называемый матричный или двусторонний поиск?

Это может показаться сложным, но формула очень похожа на базовую функцию ПОИСКПОЗ ИНДЕКС в Excel, но с одним отличием. 

Просто используйте две функции ПОИСКПОЗ, вложенных друг в друга: одну – для получения номера строки, а другую – для получения номера столбца. 

ИНДЕКС(массив; ПОИСКПОЗ(значение_поиска1 ; столбец_поиска ; 0); ПОИСКПОЗ(значение_поиска2 ; столбец_поиска ; 0))

А теперь, пожалуйста, взгляните на приведенную ниже таблицу и давайте составим формулу двумерного поиска, чтобы найти население (в миллионах) в данной стране за данный год.

С целевой страной в G1 (значение_поиска1) и целевым годом в G2 (значение_поиска2) формула принимает следующий вид:

=ИНДЕКС(B2:D11; ПОИСКПОЗ(G1;A2:A11;0); ПОИСКПОЗ(G2;B1:D1;0))

Как работает эта формула?

Всякий раз, когда вам нужно понять сложную формулу Excel, разделите ее на более мелкие части и посмотрите, что делает каждая отдельная функция:

ПОИСКПОЗ(G1;A2:A11;0); – ищет в A2:A11 значение из ячейки G1 («США») и возвращает его позицию, которая равна 3.

ПОИСКПОЗ(G2;B1:D1;0) – просматривает диапазон B1:D1, чтобы получить позицию значения из ячейки G2 («2015»), которая равна 3.

Найденные выше номера строк и столбцов становятся соответствующими аргументами функции ИНДЕКС:

ИНДЕКС(B2:D11, 3, 3)

В результате вы получите значение на пересечении 3-й строки и 3-го столбца в диапазоне B2:D11, то есть из D4. Несложно? 

ИНДЕКС ПОИСКПОЗ для поиска по нескольким условиям

Если у вас была возможность прочитать наши материалы по ВПР в Excel, вы, вероятно, уже протестировали формулу для ВПР с несколькими условиями . Однако существенным недостатком этого подхода является необходимость добавления вспомогательного столбца. Хорошей новостью является то, что функция ПОИСКПОЗ ИНДЕКС в Excel также может выполнять поиск по нескольким условиям без изменения или реструктуризации исходных данных!

Вот общая формула ИНДЕКС ПОИСКПОЗ с несколькими критериями:

{=ИНДЕКС( диапазон_возврата; ПОИСКПОЗ (1; ( критерий1 = диапазон1 ) * ( критерий2 = диапазон2 ); 0))}

Примечание. Это формула массива , которую необходимо вводить с помощью сочетания клавиш Ctrl + Shift + Enter.

Предположим, что в таблице ниже вы хотите найти значение на основе двух критериев: Покупатель и Товар.

Следующая формула ИНДЕКС ПОИСКПОЗ отлично работает:

=ИНДЕКС(C2:C10; ПОИСКПОЗ(1; (F1=A2:A10) * (F2=B2:B10); 0))

Где C2:C10 — это диапазон, из которого возвращается значение, F1 — это критерий1, A2:A10 — это диапазон для сравнения с критерием 1, F2 — это критерий 2, а B2:B10 — это диапазон для сравнения с критерием 2.

Не забудьте правильно ввести формулу, нажав Ctrl + Shift + Enter, и Excel автоматически заключит ее в фигурные скобки, как показано на скриншоте ниже:

Рис5

Если вы не хотите использовать формулы массива, добавьте в формулу в F4 еще одну функцию ИНДЕКС и завершите ее ввод обычным нажатием Enter:

=ИНДЕКС(C2:C10; ПОИСКПОЗ(1; ИНДЕКС((F1=A2:A10) * (F2=B2:B10); 0; 1); 0))

Разберем пошагово, как это работает.

Здесь используется тот же подход, что и в обычном сочетании ИНДЕКС ПОИСКПОЗ, где просматривается один столбец. Чтобы оценить несколько критериев, вы создаете два или более массива значений ИСТИНА и ЛОЖЬ, которые представляют совпадения и несовпадения для каждого отдельного критерия, а затем перемножаете соответствующие элементы этих массивов. Операция умножения преобразует ИСТИНА и ЛОЖЬ в 1 и 0 соответственно и создает массив, в котором единицы соответствуют строкам, которые удовлетворяют всем условиям. Функция ПОИСКПОЗ со значением поиска 1 находит первую «1» в массиве и передает ее позицию в ИНДЕКС, которая возвращает значение в этой позиции из указанного столбца.

Вторая формула без массива основана на способности функции ИНДЕКС работать с массивами. Второй вложенный ИНДЕКС имеет 0 в номер_строки , так что он будет передавать весь массив столбцов в ПОИСКПОЗ.

Среднее, максимальное и минимальное значение при помощи ИНДЕКС ПОИСКПОЗ

Microsoft Excel имеет специальные функции для поиска минимального, максимального и среднего значения в диапазоне. Но что, если вам нужно получить значение из другой ячейки, связанной с этими значениями? Например,  получить название города с максимальным населением или узнать товар с минимальными продажами? В этом случае используйте функцию МАКС , МИН или СРЗНАЧ вместе с ИНДЕКС ПОИСКПОЗ.

Максимальное значение.

Предположим, нам нужно в списке городов найти столицу с самым большим населением. Чтобы найти наибольшее значение в столбце С и вернуть соответствующее ему значение из столбца В, находящееся в той же строке, используйте эту формулу:

=ИНДЕКС(B2:B10; ПОИСКПОЗ(МАКС(C2:C10); C2:C10; 0))

Скриншот с примером находится чуть ниже.

Минимальное значение

Теперь найдём город с самым маленьким населением в списке. Чтобы найти наименьшее число в столбце С и получить соответствующее ему значение из столбца В:

=ИНДЕКС(B2:B10; ПОИСКПОЗ(МИН(C2:C10); C2:C10; 0))

Ближайшее к среднему

Теперь мы находим город, население которого наиболее близко к среднему значению. Чтобы вычислить позицию, наиболее близкую к среднему значению показателя, рассчитанному из D2:D10, и получить соответствующее значение из столбца C, используйте следующую формулу:

=ИНДЕКС(B2:B10; ПОИСКПОЗ(СРЗНАЧ(C2:C10); C2:C10; -1 ))

В зависимости от того, как организованы ваши данные, укажите 1 или -1 для третьего аргумента (тип_совпадения) функции ПОИСКПОЗ:

  • Если ваш столбец поиска (столбец D в нашем случае) отсортирован по возрастанию , поставьте 1. Формула вычислит наибольшее значение, которое меньше или равно среднему значению.
  • Если ваш столбец поиска отсортирован по убыванию , введите -1. Формула вычислит наименьшее значение, которое больше или равно среднему значению.
  • Если ваш массив поиска содержит значение , точно равное среднему, вы можете ввести 0 для точного совпадения. Никакой сортировки не требуется.

В нашем примере данные в столбце D отсортированы в порядке убывания, поэтому мы используем -1 для типа соответствия. В результате мы получаем «Токио», так как его население (13 189 000) является ближайшим, превышающим среднее значение (12 269 006).

Что делать с ошибками поиска?

Как вы, наверное, заметили, если формула ИНДЕКС ПОИСКПОЗ в Excel не может найти искомое значение, она выдает ошибку #Н/Д. Если вы хотите заменить это стандартное сообщение чем-то более информативным, оберните формулу ПОИСКПОЗ ИНДЕКС в функцию ЕСНД . Например:

=ЕСНД(ИНДЕКС(C2:C10; ПОИСКПОЗ(F1;A2:A10;0)); “Не найдено”)

И теперь, если кто-то вводит значение, которое не существует в диапазоне поиска, формула явно сообщит пользователю, что совпадений не найдено:

Если вы хотите перехватывать все ошибки, а не только #Н/Д, используйте функцию ЕСЛИОШИБКА вместо ЕСНД:

=ЕСЛИОШИБКА(ИНДЕКС(C2:C10; ПОИСКПОЗ(F1;A2:A10;0)); “Что-то пошло не так!”)

Пожалуйста, имейте в виду, что во многих ситуациях было бы не совсем правильно скрывать все такие ошибки, потому что они предупреждают вас о возможных проблемах в вашей формуле.

Итак, еще раз об основных преимуществах формулы ИНДЕКС ПОИСКПОЗ.

  • Возможен ли “левый” поиск?

  • Повлияет ли на результат вставка и удаление столбцов?

    Вы можете вставлять и удалять столько столбцов, сколько хотите. На результат ИНДЕКС ПОИСКПОЗ это не повлияет.

  • Возможен ли поиск по строкам и столбцам?

    Можно сначала найти подходящий столбец, а уж потом извлечь из него значение. Общий вид формулы:
    ИНДЕКС(массив; ПОИСКПОЗ(значение_поиска1 ; столбец_поиска ; 0); ПОИСКПОЗ(значение_поиска2 ; столбец_поиска ; 0))
    Подробную инструкцию смотрите здесь.

  • Как сделать поиск ИНДЕКС ПОИСКПОЗ по нескольким условиям?

    Можно выполнять поиск по двум или более условиям без добавления дополнительных столбцов. Вот формула массива, которая решит проблему:
    {=ИНДЕКС( диапазон_возврата; ПОИСКПОЗ (1; ( критерий1 = диапазон1 ) * ( критерий2 = диапазон2 ); 0))}

Вот как можно использовать ИНДЕКС и ПОИСКПОЗ в Excel. Я надеюсь, что наши примеры формул окажутся полезными для вас.

Вот еще несколько статей по этой теме:

Время на прочтение
16 мин

Количество просмотров 236K

Добрый день, уважаемые хаброжители!

Время от времени некоторым (а может и более, чем некоторым) из нас приходится сталкиваться с задачами по обработке небольших массивов данных, начиная от составления и анализа домашнего бюджета и заканчивая какими-либо расчетами по работе, учебе и т.д. Пожалуй, наиболее подходящим инструментом для этого является Microsoft Excel (или возможно иные его аналоги, но они менее распространены).

Поиск выдал мне всего одну статью на Хабре по схожей тематике — «Талмуд по формулам в Google SpreadSheet». В ней дано хорошее описание базовых вещей для работы в excel (хотя он и не 100% про сам excel).

Таким образом, накопив определенный пул запросов/задач, появилась идея их типизировать и предложить возможные решения (пусть не все возможные, но быстро дающие результат).

Речь пойдет о решении наиболее распространенных задач, с которыми сталкиваются пользователи.

Описание решений построено следующим образом – дается кейс, содержащий исходное задание, которое постепенно усложняется, к каждому шагу дано развернутое решение с пояснениями. Наименования функций будут даваться на русском языке, но в скобках при первом упоминании будет приводиться оригинальное наименование на английском языке (т.к. по опыту у подавляющего большинства пользователей установлена русскоязычная версия).

Кейс_1: Логические функции и функции поиска совпадений
«У меня есть набор значений в табличке и необходимо что бы при выполнении определенного условия/набора условий выводилось определенное значение» (с) Пользователь

Данные, как правило, представлены в табличной форме:

image

Условие:

  • если значение в столбце «Количество» больше 5,
  • то нужно вывести в колонке «Результат» значение «Заказ не требуется»,

В этом нам поможет формула «ЕСЛИ» (IF), которая относится к логическим формулам и может выдавать в решении любые значения, которые мы заранее записываем в формуле. Обращаю внимание, что любые текстовые значения записываются, используя кавычки.

Синтаксис формулы следующий:
ЕСЛИ(лог_выражение, [значение_если_истина], [значение_если_ложь])

  • Лог_выражение — выражение, дающее в результате значение ИСТИНА или ЛОЖЬ.
  • Значение_если_истина — значение, которое выводится, если логическое выражение истинно
  • Значение_если_ложь — значение, которое выводится, если логическое выражение ложно

Синтаксис формулы для решения:
Вывод результата в ячейку D2:

=ЕСЛИ(C5>5;«Заказ не требуется»;«Необходим заказ»)

На выходе получаем результат:

image

Бывает, что условие носит более сложный характер, например выполнение 2-х и более условий:

  • если значение в столбце «Количество» больше 5, а значение в колонке «Тип» равно «А»
  • то нужно вывести в колонке «Результат» значение «1», в обратном случае «0».

В данном случае мы уже не можем ограничиться использованием одной только формулы «ЕСЛИ», необходимо добавить в ее синтаксис другую формулу. И это будет еще одна логическая формула «И» (AND).
Синтаксис формулы следующий:
И(логическое_значение1, [логическое_значение2], …)

  • Логическое_значение1-2 и т.д. — проверяемое условие, вычисление которого дает значение ИСТИНА или ЛОЖЬ

Синтаксис решения будет следующим:
Вывод результата в ячейку D2:

=ЕСЛИ(И(C2>5;B2=«А»);1;0)

Таким образом, используя сочетание 2-х формул, мы находим решение нашей задачи и получаем результат:

image

Попробуем усложнить задачу – новое условие:

  • если значение в столбце «Количество» равно 10, а значение в колонке «Тип» равно «А»
  • или же значение в столбце «Количество» больше или равно 5, а значение «Тип» равен «Б»
  • то нужно вывести в колонке «Результат» значение «1», в обратном случае «0».

Синтаксис решения будет следующим:
Вывод результата в ячейку D2:

=ЕСЛИ(ИЛИ(И(C2=10;B2=«А»); И(C2>=5;B2=«Б»));1;0)

Как видно из записи, в формулу «ЕСЛИ» включено одно условие «ИЛИ» (OR) и два условия с использованием формулы «И», включенных в него. Если хотя бы одно из условий 2-го уровня имеет значение «ИСТИНА», то в колонку «Результат» будет выведен результат «1», в противном случае будет «0».
Результат:

image

Теперь перейдем к следующей ситуации:
Представим, что в зависимости от значения в столбце «Условие» должно выводиться определенное условие в столбце «Результат», ниже приведено соответствие значений и результата.
Условие:

  • 1 = А
  • 2 = Б
  • 3 = В
  • 4 = Г

При решении задачи с помощью функции «ЕСЛИ», синтаксис будет следующим:
Вывод результата в ячейку B2:

=ЕСЛИ(A2=1;«А»; ЕСЛИ(A2=2;«Б»; ЕСЛИ(A2=3;«В»; ЕСЛИ(A2=4;«Г»;0))))

Результат:

image

Как видно, написание подобной формулы не только не очень удобно и громоздко, но и может занять некоторое время на ее редактирование у неопытного пользователя в случае ошибки.
Минус подобного подхода в том, что он применим для небольшого количества условий, ведь, все их придется набирать вручную и «раздувать» нашу формулу до больших размеров, однако подход отличает полная «всеядность» к значениям и универсальность использования.

Альтернативное решение_1:
Использование формулы «ВЫБОР» (CHOOSE),
Синтаксис функции:
ВЫБОР(номер_индекса, значение1, [значение2], …)

  • Номер_индекса — номер выбираемого аргумента-значения. Номер индекса должен быть числом от 1 до 254, формулой или ссылкой на ячейку, содержащую число в диапазоне от 1 до 254.
  • Значение1, значение2,… — значение от 1 до 254 аргументов-значений, из которых функция «ВЫБОР», используя номер индекса, выбирает значение или выполняемое действие. Аргументы могут быть числами, ссылками на ячейки, определенными именами, формулами, функциями или текстом.

При ее использовании, мы сразу заносим результаты условий в зависимости от указанных значений.
Условие:

  • 1 = А
  • 2 = Б
  • 3 = В
  • 4 = Г

Синтаксис формулы:

=ВЫБОР(A2;«А»;«Б»;«В»;«Г»)

Результат аналогичен решению с цепочкой функций «ЕСЛИ» выше.
При применении этой формулы существуют следующие ограничения:
В ячейку «А2» (номер индекса) могут быть указаны только цифры, а значения результата будут выводиться в порядке возрастания от 1 до 254 значений.
Иными словами, функция будет работать только если в ячейке «А2» указаны цифры от 1 до 254 в порядке возрастания и это накладывает определенные ограничения при использовании этой формулы.
Т.е. если мы захотим, что бы значение «Г» выводилось при указании числа 5,

  • 1 = А
  • 2 = Б
  • 3 = В
  • 5 = Г

то формула будет иметь следующий синтаксис:
Вывод результата в ячейку B2:

=ВЫБОР(A31;«А»;«Б»;«В»;;«Г»)

Как видно, значение «4» в формуле нам приходится оставить пустым и перенести результат «Г» на порядковый номер «5».

Альтернативное решение_2:
Вот мы и подошли к одной из самых популярных функций Excel, овладение которой автоматически превращает любого офисного работника в «опытного пользователя excel» /sarcasm/.
Синтаксис формулы:
ВПР(искомое_значение, таблица, номер_столбца, [интервальный_просмотр])

  • Искомое_значение – значение, поиск которого осуществляется функцией.
  • Таблица – диапазон ячеек, содержащий данные. Именно в этих ячейках будет происходить поиск. Значения могут быть текстовыми, числовыми или логическими.
  • Номер_столбца — номер столбца в аргументе «Таблица», из которого будет выводиться значение в случае совпадения. Важно понимать, что отсчет столбцов происходит не по общей сетке листа (A.B,C,D и т.д.), а внутри массива, указанного в аргументе «Таблица».
  • Интервальный_просмотр — определяет, какое совпадение должна найти функция — точное или приблизительное.

Важно: функция «ВПР» ищет совпадение только по первой уникальной записи, если искомое_значение присутствует в аргументе «Таблица» несколько раз и имеет разные значения, то функция «ВПР» найдет только самое ПЕРВОЕ совпадение, результаты по всем остальным совпадениям показаны не будутИспользование формулы «ВПР» (VLOOKUP) связано с еще одним подходом в работе с данными, а именно с формированием «справочников».
Суть подхода в создании «справочника» соответствия аргумента «Искомое_значение» определенному результату, отдельно от основного массива, в котором прописываются условия и соответствующие им значения:

image

Затем в рабочей части таблицы уже прописывается формула со ссылкой на справочник, заполненный ранее. Т.е. в справочнике в столбце «D» происходит поиск значения из столбца «А» и при нахождении соответствия выводится значение из столбца «Е» в столбец «В».
Синтаксис формулы:
Вывод результата в ячейку B2:

=ВПР(A2;$D$2:$E$5;2;0)

Результат:

image

Теперь представим ситуацию, когда необходимо подтянуть данные в одну таблицу из другой, при этом таблицы не идентичны. См. пример ниже

image

Видно, что строки в столбцах «Продукт» обеих таблиц не совпадают, однако, это не является препятствием для использования функции «ВПР».
Вывод результата в ячейку B2:

=ВПР($A3;$H$3:$M$6;2;0)

Но при решении сталкиваемся с новой проблемой – при «протягивании» написанной нами формулы вправо от столбца «В» до столбца «Е», нам придется вручную заменять аргумент «номер_столбца». Дело это трудоемкое и неблагодарное, потому, на помощь нам приходит другая функция — «СТОЛБЕЦ» (COLUMN).
Синтаксис функции:
СТОЛБЕЦ([ссылка])

  • Ссылка — ячейка или диапазон ячеек, для которых требуется возвратить номер столбца.

Если использовать запись типа:

=СТОЛБЕЦ()

то функция выведет номер текущего столбца (в ячейке которого написана формула).
В результате получается число, которое можно использовать в функции «ВПР», чем мы и воспользуемся и получаем следующую запись формулы:
Вывод результата в ячейку B2:

=ВПР($A3;$H$3:$M$6; СТОЛБЕЦ();0)

Функция «СТОЛБЕЦ» определит номер текущего столбца, который будет использоваться аргументом «Номер_столбца» для определения номера столбца поиска в справочнике.
Кроме того, можно использовать конструкцию:

=СТОЛБЕЦ()-1

Вместо числа «1» можно использовать любое число (а также не только вычитать его, но и прибавлять к полученному значению), для получения желаемого результата, если нет желания ссылаться на определенную ячейку в столбце с нужным нам номером.
Получившийся результат:

image

Продолжаем развивать тему и усложняем условие: представим, что у нас есть два справочника с разными данными по продуктам и необходимо вывести в таблицу с результатом значения в зависимости от того, какой тип справочника указан в колонке «Справочник»
Условие:

  • Если в столбце «Справочник» указано число 1, данные должны тянуться из таблицы «Справочник_1», если число 2, то из таблицы «Справочник_2» в соответствии с указанным месяцем

image

Вариант решения, который сразу приходит на ум, следующий:
Вывод результата в ячейку C3:

=ЕСЛИ($B3=1; ВПР($A3;$G$3:$I$6; СТОЛБЕЦ()-1;0); ВПР($A3;$K$3:$M$6; СТОЛБЕЦ()-1;0))

Плюсы: наименование справочника может быть любым (текст, цифры и их сочетание), минусы – плохо подходит, если вариантов более 3-х.
Если же номера справочников всегда представляют собой числа, имеет смысл использовать следующее решение:
Вывод результата в ячейку C3:

=ВПР($A3; ВЫБОР($B3;$G$3:$I$6;$K$3:$M$6); СТОЛБЕЦ()-1;0)

Плюсы: формула может включать до 254 наименований справочников, минусы – их наименование должно быть строго числовым.
Результат для формулы с использованием функции «ВЫБОР»:

image

Бонус: ВПР по двум и более признакам в аргументе «искомое_значение».
Условие:

  • Представим, что у нас как всегда есть массив данных в табличной форме (если нет, то мы к нему приводим данные), из массива по определенным признакам необходимо получить значения и поместить их в другую табличную форму.

Обе таблицы приведены ниже:

image

Как видно из табличных форм, каждая позиция имеет не только наименование (которое не является уникальным), но также и относится к определенному классу и имеет свой вариант фасовки.
Используя сочетание имени и класса и фасовки, мы можем создать новый признак, для этого в таблице с данными создаем дополнительный столбец «Доп.признак», который заполняем при помощи следующей формулы:

=H3&”_”&I3&”_”&J3

Используя символ «&», объединяем три признака в один (разделитель между словами может быть любым, как и не быть вовсе, главное использовать аналогичное правило и для поиска)
Аналогом формулы может быть функция «СЦЕПИТЬ» (CONCATENATE), в этом случае она будет выглядеть следующим образом:

=СЦЕПИТЬ(H3;”_”;I3;”_”;J3)

После того, как дополнительный признак создан для каждой записи в таблице с данными, приступаем к написанию функции поиска по этому признаку, которая будет иметь вид:
Вывод результата в ячейку D3:

=ЕСЛИОШИБКА(ВПР(A2&”_”&B2&”_”&C2;$G$2:$K$6;5;0);0)

В функции «ВПР» в качестве аргумента «искомое_значение» используем все ту же связку трех признаков (наименование_класс_фасовка), но берем ее уже в таблице для заполнения и заносим непосредственно в аргумент (как вариант, можно было бы выделить значение для аргумента в дополнительный столбец в таблице для заполнения, но это действие будет излишним).
Напоминаю, что использование функции «ЕСЛИОШИБКА» (IFERROR) необходимо, если искомое значение так и не будет найдено, и функция «ВПР» выведет нам значение «#Н/Д» (об этом ниже).
Результат на картинке ниже:

image

Данный прием можно использовать и для большего количества признаков, единственное условие – уникальность получаемых комбинаций, если она не соблюдается, то результат будет некорректным.

Кейс_3 Поиск значения в массиве, или когда ВПР не в силах нам помочь

Рассмотрим ситуацию, когда необходимо понять, есть ли в массиве ячеек нужные нам значения.
Задача:

  • в столбце «Условие поиска» указано значение и необходимо определить, присутствует ли оно в столбце «Массив для поиска»

Визуально все выглядит в следующем виде:

image

Как мы видим, функция «ВПР» тут бессильна, т.к. мы ищем не точное совпадение, а именно наличие в ячейке нужного нам значения.
Для решения задачи необходимо использовать комбинацию нескольких функций, а именно:
«ЕСЛИ»
«ЕСЛИОШИБКА»
«СТРОЧН»
«НАЙТИ»

По порядку обо всех, «ЕСЛИ» мы уже разобрали ранее, потому перейдем к функции «ЕСЛИОШИБКА» (IFERROR)

ЕСЛИОШИБКА(значение, значение_при_ошибке)

  • Значение — аргумент, проверяемый на возникновение ошибок.
  • Значение_при_ошибке — значение, возвращаемое при ошибке при вычислении по формуле. Возможны следующие типы ошибок: #Н/Д, #ЗНАЧ!, #ССЫЛКА!, #ДЕЛ/0!, #ЧИСЛО!, #ИМЯ? и #ПУСТО!.

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

«СТРОЧН» (LOWER)

СТРОЧН(текст)

  • Текст — текст, преобразуемый в нижний регистр.

Важно: функция «СТРОЧН» не заменяет знаки, не являющиеся буквами.
Роль в формуле: поскольку функция «НАЙТИ» (FIND) осуществляет поиск и учетом регистра текста, то необходимо привести весь текст к одному регистру, в противном случае «чАй» будет не равно «чай» и т.д. Это актуально, если значение регистра не является условием поиска и отбора значений, в противном случае формулу «СТРОЧН» можно не использовать, так поиск будет более точным.

Теперь подробнее о синтаксисе функции «НАЙТИ» (FIND).

НАЙТИ(искомый_текст, просматриваемый_текст, [нач_позиция])

  • Искомый_текст — текст, который необходимо найти.
  • Просматриваемый_текст — текст, в котором нужно найти искомый текст.
  • Нач_позиция — знак, с которого нужно начать поиск. Первый знак в тексте «просматриваемый_текст» имеет номер 1. Если номер не указан, он по умолчанию считается равным 1.

Синтаксис формулы-решения будет иметь вид:
Вывод результата в ячейку B2:

=ЕСЛИ(ЕСЛИОШИБКА(НАЙТИ(СТРОЧН(A2); СТРОЧН(E2);1);0)=0;«fail»;«bingo!»)

Разберем логику формулы по действиям:

  1. СТРОЧН(A2) – преобразует аргумент «Искомый_текст» в ячейке в А2 в текст с нижним регистром
  2. Функция «НАЙТИ» начинает поиск преобразованного аргумента «Искомый_текст» в массиве «Просматриваемый_текст», который преобразовывается функцией «СТРОЧН(E2)», также в текст с нижним регистром.
  3. В случае если, функция находит совпадение, т.е. возвращает порядковый номер первого символа совпадающего слова/значения, срабатывает условие ИСТИНА в формуле «ЕСЛИ», т.к. полученное значение не равно нулю. Как результат, в столбце «Результат» будет выведено значение «Bingo!»
  4. Если же, функция не находит совпадение т.е. порядковый номер первого символа совпадающего слова/значения не указывается и вместо значения возвращается ошибка, срабатывает условие, заложенное в формулу «ЕСЛИОШИБКА» и возвращается значение равное «0», что соответствует условию ЛОЖЬ в формуле «ЕСЛИ», т.к. полученное значение равно «0». Как результат, в столбце «Результат» будет выведено значение «fail».

image

Как видно из рисунка выше, благодаря функциям «СТРОЧН» и «НАЙТИ» мы находим искомые значения вне зависимости от регистра символов, и места нахождения в ячейке, но необходимо обратить внимание на строку 5.
Условие поиска задано как «111», но в массиве поиска указано значение «1111111 печенюшки», однако формула выдает результат «Bingo!». Это происходит потому, что значение «111» входит в ряд значений «1111111», как следствие находится совпадение. В обратном случае данное условие не сработает.

Кейс_4 Поиск значения в массиве по нескольким условиям, или когда ВПР тем более не в силах нам помочь

Представим ситуацию, когда необходимо найти значение из «Таблица с результатом» в двумерном массиве «Справочник» по нескольким условиям, а именно по значению «Наименование» и «Месяц».
Табличная форма задания будет иметь следующий вид:

image

Условие:

  • В таблицу с результатом необходимо подтянуть данные в соответствии с совпадением условий «Наименование» и «Месяц».

Для решения подобной задачи подойдет комбинация функций «ИНДЕКС» и «ПОИСКПОЗ»

Синтаксис функции «ИНДЕКС» (INDEX)

ИНДЕКС(массив, номер_строки, [номер_столбца])

  • Массив — диапазон ячеек, из которого будут показываться значения в случае совпадения условий их поиска.
  • Если массив содержит только одну строку или один столбец, аргумент «номер_строки» или «номер_столбца» соответственно не является обязательным.
  • Если массив занимает больше одной строки и одного столбца, а из аргументов «номер_строки» и «номер_столбца» задан только один, то функция «ИНДЕКС» возвращает массив, состоящий из целой строки или целого столбца аргумента «массив».
  • Номер_строки — номер строки в массиве, из которой требуется возвратить значение.
  • Номер_столбца — номер столбца в массиве, из которого требуется возвратить значение.

Иными словами функция возвращает из указанного массива в аргументе «Массив» значение, которое находится на пересечении координат, указанных в аргументах «Номер_строки» и «Номер_столбца».

Синтаксис функции «ПОИСКПОЗ» (MATCH)

ПОИСКПОЗ(искомое_значение, просматриваемый_массив, [тип_сопоставления])

  • Искомое_значение — значение, которое сопоставляется со значениями в аргументе просматриваемый_массив. Аргумент искомое_значение может быть значением (числом, текстом или логическим значением) или ссылкой на ячейку, содержащую такое значение.
  • Просматриваемый_массив — диапазон ячеек, в которых производится поиск.
  • Тип_сопоставления — необязательный аргумент. Число -1, 0 или 1.

Функция ПОИСКПОЗ выполняет поиск указанного элемента в диапазоне ячеек и возвращает относительную позицию этого элемента в диапазоне.
Суть использования комбинации функций «ИНДЕКС» и «ПОИСКПОЗ» в том, то мы производим поиск координат значений по их наименованию по «осям координат».
Осью Y будет столбец «Наименование», а осью X – строка «Месяцы».

часть формулы:

ПОИСКПОЗ($A4;$I$4:$I$7;0)

возвращает число по оси Y, в данном случае оно будет равно 1, т.к. значение «А» присутствует в искомом диапазоне и имеет относительную позицию «1» в этом диапазоне.
часть формулы:

ПОИСКПОЗ(B$3;$J$3:$L$3;0)

возвращает значение #Н/Д, т.к. значение «1» отсутствует в просматриваемом диапазоне.

Таким образом, мы получили координаты точки (1; #Н/Д) которые функция «ИНДЕКС» использует для поиска в аргументе «Массив».
Полностью написанная функция для ячейки B4 будет иметь следующий вид:

=ИНДЕКС($J$4:$L$7; ПОИСКПОЗ($A4;$I$4:$I$7;0); ПОИСКПОЗ(B$3;$J$3:$L$3;0))

По сути, если бы мы знали координаты нужного нам значения, функция выглядела бы следующим образом:

=ИНДЕКС($J$4:$L$7;1;#Н/Д))

Поскольку, аргумент «Номер_столбца» имеет значение «#Н/Д», то результат для ячейки «B4» будет соответствующий.
Как видно из получившегося результата не все значения в таблице с результатом находят совпадение со справочником и в итоге мы видим, что часть значений в таблице выводится в виде «#Н/Д», что затрудняет использование данных для дальнейших расчетов.
Результат:

image

Что бы нейтрализовать этот негативный эффект используем функцию «ЕСЛИОШИБКА», о которой мы читали ранее, и заменяем значение, возвращающееся при ошибке на «0», тогда формула будет иметь вид:
Вывод результата в ячейку B4:

=ЕСЛИОШИБКА(ИНДЕКС($J$4:$L$7; ПОИСКПОЗ($A4;$I$4:$I$7;0); ПОИСКПОЗ(B$3;$J$3:$L$3;0));0)

Демонстрация результата:

image

Как видно на картинке, значения «#Н/Д» более не мешают нам в последующих вычислениях с использованием значений в таблице с результатом.

Кейс_5 Поиск значения в диапазоне чисел

Представим, что нам необходимо дать определенный признак числам, входящим в определенный диапазон.
Условие:
В зависимости от стоимости продукта ему должна присваиваться определенная категория
Если значение находится в диапазоне

  • От 0 до 1000 = А
  • От 1001 до 1500 = Б
  • От 1501 до 2000 = В
  • От 2001 до 2500 = Г
  • Более 2501 = Д

image

Функция ПРОСМОТР (LOOKUP) возвращает значение из строки, столбца или массива. Функция имеет две синтаксических формы: векторную и форму массива.

ПРОСМОТР(искомое_значение; просматриваемый_вектор; [вектор_результатов])

  • Искомое_значение — значение, которое функция ПРОСМОТР ищет в первом векторе. Искомое_значение может быть числом, текстом, логическим значением, именем или ссылкой на значение.
  • Просматриваемый_вектор — диапазон, состоящий из одной строки или одного столбца. Значения в аргументе просматриваемый_вектор могут быть текстом, числами или логическими значениями.
  • Значения в аргументе просматриваемый_вектор должны быть расположены в порядке возрастания: …, -2, -1, 0, 1, 2, …, A-Z, ЛОЖЬ, ИСТИНА; в противном случае функция ПРОСМОТР может возвратить неправильный результат. Текст в нижнем и верхнем регистрах считается эквивалентным.
  • Вектор_результатов — диапазон, состоящий из одной строки или столбца. Вектор_результатов должен иметь тот же размер, что и просматриваемый_вектор.

Вывод результата в ячейку B3:

=ПРОСМОТР(E3;$A$3:$A$7;$B$3:$B$7)

image

Аргументы «Просматриваемый_вектор» и «Вектор_результата» можно записать в форме массива – в этом случае не придется выводить их в отдельную таблицу на листе Excel.
В этом случае функция будет выглядеть следующим образом:
Вывод результата в ячейку B3:
=ПРОСМОТР(E3;{0;1001;1501;2001;2501};{«А»;«Б»;«В»;«Г»;«Д»})

Кейс_6 Суммирование чисел по признакам

Для суммирования чисел по определенным признакам можно использовать три разных функции:
СУММЕСЛИ (SUMIF) – суммирует только по одному признаку
СУММЕСЛИМН (SUMIFS) – суммирует по множеству признаков
СУММПРОИЗВ (SUMPRODUCT) – суммирует по множеству признаков
Существует также вариант с использованием «СУММ» (SUM) и функции формулы массивов, когда формула «СУММ» возводится в массив:
({=СУММ(()*())}
но такой подход довольно неудобен и полностью перекрывается по функционалу формулой «СУММПРОИЗВ»
Теперь подробнее по синтаксису «СУММПРОИЗВ»:

СУММПРОИЗВ(массив1, [массив2], [массив3],…)

  • Массив1 — первый массив, компоненты которого нужно перемножить, а затем сложить результаты.
  • Массив2, массив3… — от 2 до 255 массивов, компоненты которых нужно перемножить, а затем сложить результаты.

Условие:

  • Найти общую сумму по стоимости отгрузок по каждому из продуктов за определенный период:

image

Как видно из таблицы с данными, что бы посчитать стоимость необходимо цену умножить на количество, а полученное значение, применив условия отбора переносить в таблица с результатом.
Однако, формула «СУММПРОИЗ» позволяет проводить такие расчеты внутри формулы.
Вывод результата в ячейку B4:

=СУММПРОИЗВ(($A4=$H$3:$H$11)*($K$3:$K$11>=B$3)*($K$3:$K$11<C$3);($M$3:$M$11)*($L$3:$L$11))

Разберем формулу по частям:

($A4=$H$3:$H$11)

– задаем условие по отбору в столбце «Наименование» таблицы с данными по столбцу «Наименование» в таблице с результатом

($K$3:$K$11>=B$3)*($K$3:$K$11<C$3)

– задаем условие по временным рамкам, дата больше или равна первого числа текущего месяца, но меньше первого числа месяца следующего. Аналогично – условие в таблице с результатом, массив – в таблице с данными.

($M$3:$M$11)*($L$3:$L$11)

– перемножаем столбцы «Количество» и «Цена» в таблице с данными.
Несомненным плюсом данной функции является свободный порядок записи условий, их можно записывать в любом порядке, на результат это не повлияет.
Результат:

image

Теперь усложним условие и добавим требование, что бы отбор по наименованию «печеньки» происходил только по классам «малые» и «большие», а по наименованию «булки» все, кроме по классу «с джемом»:

Вывод результата в ячейку B4:

=СУММПРОИЗВ(($A4=$H$3:$H$11)*($J$3:$J$11>=B$3)*($J$3:$J$11<C$3)*(($I$3:$I$11=«малые»)+($I$3:$I$11=«большие»));($L$3:$L$11*$K$3:$K$11))

В формуле для отбора по печенькам добавилось новое условие:

(($I$3:$I$11=«малые»)+($I$3:$I$11=«большие»))

– как видно, два или более условия по одному столбцу выделяются в отдельную группу при помощи символа «+» и заключения условий в дополнительные скобки.
В формуле для отбора по булкам также добавилось новое условие:

=СУММПРОИЗВ(($A5=$H$3:$H$11)*($J$3:$J$11>=B$3)*($J$3:$J$11<C$3)*($I$3:$I$11<>«с джемом»);($L$3:$L$11)*($K$3:$K$11))

это:

($I$3:$I$11<>«с джемом»)

– на самом деле, в данной формуле можно было написать условие отбора также как и при отборе по печенькам, но тогда, пришлось бы перечислять три условия в формуле, в данном случае, проще написать исключение – не равно «с джемом» для этого используем значение «<>».
Вообще, если группы признаков/классов заранее известны, то лучше объединять их в эти группы, создавая справочники, чем записывать все условия в функцию, раздувая ее.
Результат:

image

Что ж, вот мы и подошли к концу нашего краткого мануала, который на самом деле мог бы быть намного больше, но целью было все-таки дать решение наиболее встречающихся ситуаций, а не описывать решение частных (но гораздо более интересных случаев).
Надеюсь, что мануал поможет кому-нибудь в решении задач при помощи Excel, ведь это будет значить, что мой труд не пропал зря!

Спасибо за уделенное время!

Добавить комментарий