Модуль 4 · Урок 4.2
Поиск по ключу
Ключ и справочник, ВПР с точным совпадением, ИНДЕКС и ПОИСКПОЗ, ошибка #Н/Д.
В продаже записаны только код товара и число упаковок, а категория и масса лежат на другом листе — в справочнике. Чтобы посчитать продажи напитков, к каждой продаже нужно «подтянуть» категорию. ВПР находит по ключу строку справочника и возвращает из неё нужное поле.
Разберём ключ и справочник, функции ВПР, ИНДЕКС и ПОИСКПОЗ и ошибку #Н/Д.
Справочник и ключ
Свойства товара хранят один раз в справочнике, а в операциях — только ключ. Если в каждой продаже повторять название, массу и категорию, файл разрастётся, а исправлять придётся в сотне мест. Поэтому в операции пишут только код товара и сведения о самой продаже.
Код, позволяющий однозначно найти запись справочника, называется ключом. Например, код товара 101 связывает строку продажи со строкой «Чай» в таблице товаров. Номер строки на листе ключом не является: после сортировки положение записи может измениться.
Лист «Товары» содержит четыре записи, лист «Магазины» — коды 1, 2, 3: магазины 1 и 3 находятся в Северном районе, магазин 2 — в Южном. Переключай листы под сеткой:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Код | Название | Категория | Масса упаковки, г |
| 2 | 101 | Чай | Напитки | 100 |
| 3 | 102 | Кофе | Напитки | 250 |
| 4 | 103 | Печенье | Выпечка | 200 |
| 5 | 104 | Какао | Напитки | 150 |
| A | B | |
|---|---|---|
| 1 | Код магазина | Район |
| 2 | 1 | Северный |
| 3 | 2 | Южный |
| 4 | 3 | Северный |
Связь имеет вид «много операций могут относиться к одному товару». Поэтому повторение кода в операциях нормально, а в справочнике товаров код должен обозначать одну определённую запись. Если в справочнике один код связан с разными свойствами, обычный поиск первой строки не разрешит противоречие.
ВПР
ВПР(ключ; справочник; номер столбца; 0) ищет ключ в первом столбце справочника и берёт значение из указанного столбца той же строки. Название значит «вертикальный поиск».
=ВПР(B2; Товары!$A$2:$D$5; 3; 0)B2 — код товара из операции. Товары! указывает другой лист. $A$2:$D$5 — закреплённый диапазон справочника. 3 означает третий столбец внутри этого диапазона, то есть категорию. 0 задаёт точное совпадение; вместо него можно использовать ЛОЖЬ.
Вот что ВПР делает, когда в B2 код 103:
- Справочник — диапазон Товары!$A$2:$D$5. Внутри него столбцы считаются с единицы: A — 1-й, B — 2-й, C — 3-й, D — 4-й. Ключ 103 ищется только в 1-м.
- A2: 101 — не 103, ВПР спускается ниже.
- A3: 102 — не 103, ВПР спускается ниже.
- A4: 103 — совпадение. Строка 4 листа — 3-я строка справочника.
- В найденной строке ВПР берёт 3-й столбец диапазона — C4: Выпечка. Четвёртый аргумент 0 требует точного совпадения ключа.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Дата | Код | Магазин | Упаковок | Категория | Район |
| 2 | 01.10.2026 | 101 | 1 | 10 | Напитки | Северный |
| 3 | 01.10.2026 | 103 | 1 | 6 | Выпечка | Северный |
| 4 | 02.10.2026 | 102 | 2 | 2 | Напитки | Южный |
| 5 | 02.10.2026 | 104 | 3 | 5 | Напитки | Северный |
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Код | Название | Категория | Масса, г |
| 2 | 101 | Чай | Напитки | 100 |
| 3 | 102 | Кофе | Напитки | 250 |
| 4 | 103 | Печенье | Выпечка | 200 |
| 5 | 104 | Какао | Напитки | 150 |
| A | B | |
|---|---|---|
| 1 | Код магазина | Район |
| 2 | 1 | Северный |
| 3 | 2 | Южный |
| 4 | 3 | Северный |
E2скопирована до E5=ВПР(B2;Товары!$A$2:$D$5; 3; 0) F2скопирована до F5=ВПР(C2;Магазины!$A$2:$B$4; 2; 0)
Выбери E3: формула ищет код 103, и вкладка «Товары» отмечена цветом — справочник лежит там. Перейди на неё: рамка стоит на всём диапазоне A2:D5. Поменяй код в B3 на 102 — категория станет «Напитки».
Диапазон справочника удобнее выделить мышью на другом листе — Excel сам впишет ссылку с именем листа. Четвёртый аргумент 0 не пропускай: без него поиск приближённый.
Тонкости:имя листа с пробелом и приближённый поиск
Имя листа с пробелом берут в одинарные кавычки: 'Каталог товаров'!$A$2:$D$5.
Без 0 (или с ИСТИНА) ВПР ищет приближённо: при отсутствии ключа берёт ближайший меньший, а первый столбец должен быть отсортирован. Это нужно, например, для выбора тарифа по интервалу; для кода товара нужен точно тот же код.
ИНДЕКС и ПОИСКПОЗ
ПОИСКПОЗ находит номер позиции ключа, ИНДЕКС берёт элемент по номеру; вместе они ищут в любую сторону. ПОИСКПОЗ(B2;Товары!$A$2:$A$5;0) возвращает позицию кода внутри диапазона. Если найден третий элемент, результат равен 3, даже если на листе он находится в строке 4. Это относительная позиция в указанном списке.
ИНДЕКС(Товары!$C$2:$C$5;3) возвращает третий элемент столбца категорий. Объединив операции, получаем:
=ИНДЕКС(Товары!$C$2:$C$5;ПОИСКПОЗ(B2; Товары!$A$2:$A$5; 0))Внутренняя ПОИСКПОЗ вычисляется первой и отдаёт ИНДЕКС номер. При коде 103 в B2:
- ИНДЕКС, внутри неё ПОИСКПОЗ.
- Ключ из B2 подставлен: 103.
- ПОИСКПОЗ нашла 103 третьим в списке кодов 101, 102, 103, 104 — на её месте число 3.
- ИНДЕКС берёт третий элемент столбца категорий: Выпечка.
| A | B | C | |
|---|---|---|---|
| 1 | Код | Позиция в списке кодов | Категория по позиции |
| 2 | 103 | 3 | Выпечка |
| 3 | Печенье | 3 | 103 |
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Код | Название | Категория | Масса, г |
| 2 | 101 | Чай | Напитки | 100 |
| 3 | 102 | Кофе | Напитки | 250 |
| 4 | 103 | Печенье | Выпечка | 200 |
| 5 | 104 | Какао | Напитки | 150 |
B2=ПОИСКПОЗ(A2;Товары!$A$2:$A$5; 0) B3=ПОИСКПОЗ(A3;Товары!$B$2:$B$5; 0) C2=ИНДЕКС(Товары!$C$2:$C$5;B2) C3=ИНДЕКС(Товары!$A$2:$A$5;B3)
Во второй строке поиск идёт по названию, а возвращается код — столбец левее столбца поиска. ВПР так не умеет.
ВПР требует, чтобы ключ был первым столбцом диапазона, а пара ИНДЕКС и ПОИСКПОЗ ищет в любую сторону.
Тонкости:ПРОСМОТРX
В новых версиях Excel есть ПРОСМОТРX — она тоже ищет в любую сторону. Курс без неё обходится: в старых версиях и на экзамене её может не быть.
Ошибка #Н/Д
#Н/Д — ключа нет в справочнике; это повод проверить данные, а не заменить ошибку нулём. Проверь сам код, его тип, пробелы, границы диапазона и опечатки. Не заменяй ошибку нулём: неизвестная масса — не масса ноль, а отсутствие цены — не бесплатный товар.
| A | B | |
|---|---|---|
| 1 | Код | Масса |
| 2 | 105 | #Н/Д |
| 3 | 102 | #Н/Д |
| 4 | 102 | 250 |
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Код | Название | Категория | Масса, г |
| 2 | 101 | Чай | Напитки | 100 |
| 3 | 102 | Кофе | Напитки | 250 |
| 4 | 103 | Печенье | Выпечка | 200 |
| 5 | 104 | Какао | Напитки | 150 |
B2=ВПР(A2;Товары!$A$2:$D$5; 4; 0) B3=ВПР(A3;Товары!$A$2:$D$5; 4; 0) B4=ВПР(A4;Товары!$A$2:$D$5; 4; 0)
Кода 105 в справочнике нет. А в A3 код записан текстом '102: на вид тот же, но число 102 и текст «102» для поиска разные значения.
Поиск и условная сумма
ВПР извлекает свойство одной записи, а итог по многим записям считает условная сумма. Сложить все продажи товара — задача условной суммы по операциям, а не поиска.
Свойство, найденное ВПР, становится обычным столбцом — по нему можно отбирать. Сколько упаковок напитков продано, если категория записана только в справочнике:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Код | Упаковок | Категория | Вопрос | Ответ | |
| 2 | 101 | 10 | Напитки | упаковок напитков | 17 | |
| 3 | 103 | 6 | Выпечка | операций с напитками | 3 | |
| 4 | 102 | 2 | Напитки | |||
| 5 | 104 | 5 | Напитки |
| A | B | C | |
|---|---|---|---|
| 1 | Код | Название | Категория |
| 2 | 101 | Чай | Напитки |
| 3 | 102 | Кофе | Напитки |
| 4 | 103 | Печенье | Выпечка |
| 5 | 104 | Какао | Напитки |
C2скопирована до C5=ВПР(A2;Товары!$A$2:$C$5; 3; 0) F2=СУММЕСЛИ(C2:C5;"Напитки";B2:B5) F3=СЧЁТЕСЛИ(C2:C5;"Напитки")
Упаковок 17, а операций 3: обе величины считаются по одной выборке, но отвечают на разные вопросы.
Итог
Справочник хранит свойства один раз, а поиск по ключу приносит их в каждую запись. Вот что понадобится дальше.
- КлючОднозначно указывает запись справочника; номер строки ключом не является.
- ВПР
=ВПР(ключ;: ключ в первом столбце, 0 — точное совпадение.Лист!$A$2:$D$5; столбец; 0) - ИНДЕКС
ИНДЕКС(столбец;ПОИСКПОЗ(ключ;ключи;0))ищет и влево. - #Н/ДКлюча нет: проверь код, тип и пробелы, а не ставь 0.
- ИтогНайденное свойство — обычный столбец для
СУММЕСЛИиСЧЁТЕСЛИ.
Проверьте себя
Ответь сначала сам, потом открой ответ.
Код 102 находится в B2. В справочнике Товары!A2:D5 столбец D — масса упаковки. Напиши точный поиск массы и объясни аргумент номера столбца.
ОтветСкрыть ответ
=ВПР(B2;. Столбец массы — четвёртый именно внутри A:D. Для кода 102 результат равен 250 г.
Почему при копировании формулы ВПР вниз справочник нужно закрепить знаком $?
ОтветСкрыть ответ
Иначе при копировании диапазон справочника сдвинется вниз и потеряет первые записи.
Код в операции записан как «102 » с пробелом в конце. Что вернёт ВПР и как это исправить?
ОтветСкрыть ответ
#Н/Д: «102 » — текст с пробелом, не равный числу 102. Убрать пробел (СЖПРОБЕЛЫ) и превратить в число (ЗНАЧЕН).
Зачем нужен четвёртый аргумент 0 у ВПР, если коды в справочнике и так уникальны?
ОтветСкрыть ответ
Без него ВПР ищет приближённо: при отсутствии кода вернёт свойство соседнего меньшего кода вместо ошибки.
Найди название товара по массе 150, если масса стоит в столбце D, а название — в B. Почему здесь не подходит ВПР?
ОтветСкрыть ответ
=ИНДЕКС(Товары!$B$2:$B$5; — «Какао». ВПР ищет только в первом столбце диапазона и возвращает столбцы правее.
Практика
Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.
Номер столбца для ВПР
Справочник лежит в Товары!C10:F40, ключ — в столбце C, категория — в столбце E. Какой номер столбца передать ВПР?
Введите число.
Подсказка
Столбцы считают внутри диапазона, а не от A.
Разбор
C — первый, D — второй, E — третий.
Ответ: 3
ВПР массы
Справочник урока Товары!A2:D5: коды 101–104, названия Чай, Кофе, Печенье, Какао, категории Напитки, Напитки, Выпечка, Напитки, масса 100, 250, 200, 150. Что вернёт =ВПР(103;?
Введите число.
Подсказка
Найди строку с кодом 103 и возьми четвёртый столбец.
Разбор
Код 103 — Печенье, масса 200.
Ответ: 200
Кода нет
Справочник урока Товары!A2:D5: коды 101–104, названия Чай, Кофе, Печенье, Какао, категории Напитки, Напитки, Выпечка, Напитки, масса 100, 250, 200, 150. Что вернёт =ВПР(105;?
Введите ответ так, как его покажет Excel.
Подсказка
Есть ли код 105 в справочнике?
Разбор
Кода 105 нет, точный поиск даёт #Н/Д.
Ответ: #Н/Д
ПОИСКПОЗ
Справочник урока Товары!A2:D5: коды 101–104, названия Чай, Кофе, Печенье, Какао, категории Напитки, Напитки, Выпечка, Напитки, масса 100, 250, 200, 150. Что вернёт =ПОИСКПОЗ(104;?
Введите число.
Подсказка
Позиция считается внутри диапазона, с 1.
Разбор
104 — четвёртый код в списке.
Ответ: 4
ИНДЕКС
Справочник урока Товары!A2:D5: коды 101–104, названия Чай, Кофе, Печенье, Какао, категории Напитки, Напитки, Выпечка, Напитки, масса 100, 250, 200, 150. Что вернёт =ИНДЕКС(Товары!$B$2:$B$5;?
Введите текст без кавычек.
Подсказка
Второй элемент столбца названий.
Разбор
Названия Чай, Кофе, … — второе «Кофе».
Ответ: Кофе
Упаковки напитков
Операции с кодами 101, 101, 104 и 103 и количествами 2, 3, 4 и 5; категорию находят по справочнику урока (101 и 104 — напитки, 103 — выпечка). Сколько упаковок напитков продано?
Введите число.
Подсказка
Сложи количества операций, где товар — напиток.
Разбор
Напитки — 101, 101, 104: 2 + 3 + 4 = 9.
Ответ: 9
Операции с напитками
По тем же операциям: сколько было операций с напитками?
Введите число.
Подсказка
Считай операции, а не упаковки.
Разбор
Три операции: 101, 101 и 104.
Ответ: 3