Трюк №70. Поиск n-го вхождения значения при помощи функции ВПР
Встроенные функции поиска Excel могут выполнять довольно сложные задачи, но, к сожалению, в Excel нет специальной функции, которая могла бы возвращать n-е вхождение указанных данных. К счастью, есть способы научить Excel это делать.
В таблице данных можно применить функции поиска и ссылочные функции Excel, чтобы выбрать детали, соответствующие указанному значению. Возможно, самой популярной функцией Excel такого типа является ВПР (VLOOKUP). Хотя ее очень удобно применять для поиска указанного значения в самом левом столбце таблицы, найти n-е значение в самом левом столбце она не сможет. Можно, однако, применить очень простой способ поиска любого указанного вхождения при помощи функции ВПР (VLOOKUP) или любой другой функции поиска.
В этом примере мы предполагаем, что у вас есть таблица, состоящая из двух столбцов данных, где в столбце А размещены имена, а в столбце В — возраст людей (рис. 6.12).
При помощи функции ВПР (VLOOKUP) можно выделить возраст человека в зависимости от его имени. К сожалению, некоторые имена встречаются несколько раз. Вы хотите, чтобы функция ВПР (VLOOKUP) смогла найти не только первое вхождение имени Дэйв, но и последующие. Вот, как это можно сделать (помните, что в этом примере данные находятся в столбцах А и В).
Сначала полностью выделите столбец А, щелкнув букву А в заголовке столбца, а затем выберите команду Вставка → Столбцы (Insert → Columns), чтобы добавить пустой столбец (который станет столбцом А). Щелкните ячейку А2 (пропустив А1, так как В1 — это заголовок) и введите следующую формулу: =B2&COUNTIF($B$2:B2;B2), в русской версии Excel =В2&СЧЁТЕСЛИ($В$2:В2;В2). Скопируйте ее вниз на столько строк, сколько данных в столбце В (еще раз щелкните ячейку А2 и дважды щелкните маркер заполнения). Вы получите имена Дэйв1, Дэйв2, Дэйв3 и т. д. (рис. 6.13). Обратите внимание на абсолютную ссылку $В$2 в функции СЧЁТЕСЛИ (COUNTIF) и на то, что остальные ссылки — относительные. Это необходимо, чтобы функция работала правильно.
Если вы еще не догадались: теперь в столбце А можно найти n-е вхождение любого имени.
Щелкните ячейку D2 и введите следующую формулу: =VLOOKUP(«Дэйв3»;$A$l:$C$100;3;FALSE), в русской версии Excel =ВПР(«Дэйв3»;$А$1:$С$100;3;ЛОЖЬ). Формула вернет возраст для третьего вхождения имени Дэйв (рис. 6.14).
Конечно, можно скрыть столбец А, так как видеть его не нужно. Кроме того, имена в столбце А можно использовать как исходный диапазон для списка в другой ячейке, выбрав команду Данные → Проверка → Список (Data → Validation List) и введя ссылку на ячейку, содержащую этот список, в функции ВПР (VLOOKUP).