Ну чтож, если вы заждались новый выпуск, то вот он. Сегодня мы будем говорить об одной из самых проблематичных для изучения (по опыту) формул, которая, тем не менее, несет в себе огромный потенциал для работы с данными. Итак...
Да, дорогие друзья, это тот самый легендарный Вэпээр, о котором говорят с придыханием девочки из бухгалтерии. Ладно, давайте к серьезному
Для чего используется? Для поиска данных в массиве по условию.
Звучит крайне криво - как и все околонаучные определения - но в самом Экселе определение еще хуже, так что... Так что давайте традиционно разбирать на конкретных примерах, потому что без этого реально тяжело.
Сначала самый базовый пример. Допустим у вас есть простейшая табличка из трех столбцов, в одном из коротых указана модель ноутбука, в другом - цвет корпуса, а в третьем - диагональ экрана. Ну вот такая:
И у вас есть задача сделать что-то типа шаблона ценника, который можно будет быстро распечатать, подставив в него только нужную модель - а все остальные характеристики чтобы подтягивались автоматически. Вот тут вам и пригодится наша сегодняшняя формула ВПР().
Табл.2 Пишем формулу в ячейке С17
Давайте разберем, как именно пишется ВПР(). В ней четыре блока, разделенных точкой с запятой.
Первый блок - условие, то есть то, что мы будем искать. Обратите внимание, столбец с условием должен быть левее столбцов с теми значениями, которые мы будем подставлять - это крайне важно, потому что иначе формула просто не работает. Только слева-направо!
Второй блок - это массив, в котором мы будем искать данные. Воспринимайте его как набор столбцов в рамках данной формулы, так будет чуть легче. Я рекомендую всегда выбирать массив именно столбцами, не ограничивая себя строками без необходимости. И не забывайте фиксировать массив (знаки $ перед буквами) - это крайне важно в большинстве случаев.
Третий блок - это номер столбца относительно начала массива, из которого будут подставляться данные. То есть в нашем примере "Диагональ экрана" - столбец D - это третий столбец массива, "Цвет корпуса" второй, "Модель" - первый.
Четвертый блок - это "точность" поиска. Если честно, мне не приходилось сильно эксперементировать с этим параметром, поэтому я рекомендую ставить его всегда 0 (ноль). В этом случае формула будет искать точное соответствие. С помощью неточного соответствия (единичка) в теории можно заставить формулу искать похожие значения, но одно "но", о котором я расскажу чуть позже, которое делает данную функцию не слишком полезной.
Важно помнить, что массив, из которого мы будем подставлять данные, должен удовлетворять определенным правилам. Главное из которых - в столбце, который мы выбираем условием (крайний левый) не должно быть дубликатов. Ну то есть теоретически дубликаты в нем могут быть, но тогда значения у этих дубликатов также должны быть одинаковыми.
Поясню все на том же примере - допустим, у вас есть ноутбук модели AS650HP, который кто-то не очень аккуратный занес в табличку дважды и с разными диагоналями. Такого не может быть - ну потому что модель одна, и второго размера экрана у нее не существует. Явная ошибка. Но - формула ВПР() об этом не знает. И она возьмет из таблицы то значение, которое находится выше. То есть в данном случае 16 дюймов, что (допустим) неправильно. Сколько бы ни было строчек с одинаковым условием - формула всегда берет верхнюю.
Помните СУММЕСЛИМН() формулу? Вот она адекватно реагирует на повторяющиеся условия, она собственно для этого и создана. ВПР() же создана для вставки одного конкретного значения. И тут мы подходим к основной функции этой формулы - так называемому приему мэппинга.
Что интересного можно сделать с этой формулой?
Итак, о мэппинге. Я так называю процесс простановки некоего соответствующего параметра из одной таблицы в другую, которую необходимо определенным образом упорядочить и обработать. Чаще всего это делается тогда, когда не хочется проставлять около каждой из 100500 строчек какой-то параметр вручную или же в теории он может измениться в будущем.
Давайте придумаем что-нибудь базовое - ну вот например, если дополнить табличку из примера выше пометкой "в наличии", то можно будет рассортировать список заказов на те, которые мы сможем выполнить, и те, которые не сможем. Но чаще всего подобное используется для создания более сложных классификаторов. Например, для переложения бухгалтерского учета в управленческий, если это не автоматизировано в учетной программе, можно написать мэппинг, в котором статье из бухгалтерского учета будет соответствать статья управленческого.
Мэппинги, естественно, можно строить как по одному условию, так и по нескольким. В этом вам поможет ранее изученная формула "СЦЕПИТЬ". Например, представим что покупатель говорит "я хочу красный ноутбук с диагональю 14 дюймов, есть у вас такие?" - и мы, забив в наш шаблон эти два параметра и пробив пару формул отвечаем "да, вот такая модель в наличии".
В качестве условия для ВПР() может служить совокупность любых ячеек, которым вы сможете поставить что-либо в соответствие. Главное, чтобы эта совокупность была уникальна.
Важно понимать, что в третьем блоке в качестве номера столбца может также быть заведена формула. Мне не хочется слишком сильно ломать вам голову, но все же - изучим еще одну небольшую формулу. Она называется ПОИСКПОЗ(). Работает следующим образом - выбираем в первом блоке что искать, во втором обозначаем массив, где искать, и далее указываем, как ищем (-1 - самое ранее, 0 - первое, 1 - последнее).
Соответственно в этом примере формула найдем там значение "Модель" в массиве из пяти ячеек, и оно будет равно 2 - потому что это вторая ясейка массива. Как думаете, как можно это применить, чтобы упростить себе задачу в шаблоне из нашего примера?
Да вот так - мы просто делаем наименования полей нашего "шаблона ценника" такими же, как наименования столбцов в исходной таблице и далее вставляем ПОИСКПОЗ() в формулу ВПР(), наводясь на (зафиксированный!) массив из пяти ячеек. В каждом случае номер ячейки, которую найдет ПОИСКПОЗ() будет соответствовать номеру столбца для ВПР().
Таким образом например можно формировать всякие заявления, в которых нужна ФИО, должность, табельный номер или еще что-то, если это не автоматизировано.
Ну а на этом я с вами прощаюсь. Задавайте вопросы, комментируйте, учитесь, тренируйтесь.