Оглавление
В этом уроке мы рассмотрим, как использовать функции IFERROR и VLOOKUP вместе для отлова и обработки различных ошибок. Кроме того, вы узнаете, как делать последовательные vlookup в Excel путем вложения нескольких функций IFERROR одна в другую.
Excel VLOOKUP и IFERROR - эти две функции довольно сложно понять по отдельности, не говоря уже об их сочетании. В этой статье вы найдете несколько простых примеров, которые касаются часто встречающихся случаев использования и наглядно иллюстрируют логику формул.
Если у вас нет большого опыта работы с функциями IFERROR и VLOOKUP, возможно, будет хорошей идеей сначала изучить их основы, перейдя по приведенным выше ссылкам.
Формула IFERROR VLOOKUP для обработки #N/A и других ошибок
Когда Excel Vlookup не может найти значение поиска, он выдает ошибку #N/A, как показано ниже:
В зависимости от потребностей вашего бизнеса, вы можете замаскировать ошибку собственным текстом, нулем или пустой ячейкой.
Пример 1. IFERROR с формулой VLOOKUP для замены ошибок собственным текстом
Если вы хотите заменить стандартное обозначение ошибки на свой текст, оберните свою формулу VLOOKUP в IFERROR и введите любой текст во втором аргументе ( значение_если_ошибка ), например, "Не найдено":
IFERROR(VLOOKUP( ... ), "Не найдено")При использовании значения поиска в B2 в основной таблице и диапазона поиска A2:B4 в таблице Lookup формула принимает следующий вид:
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "Not found")
На скриншоте ниже показана наша формула Excel IFERROR VLOOKUP в действии:
Результат выглядит гораздо более понятным и гораздо менее пугающим, не так ли?
Аналогичным образом можно использовать INDEX MATCH вместе с IFERROR:
=IFERROR(INDEX('Lookup table'!$B$2:$B$5,MATCH(B2,'Lookup table'!$A$2:$A$5,0)), "Not found")
Формула IFERROR INDEX MATCH особенно полезна, когда вы хотите получить значения из столбца, который находится слева от столбца поиска (левый поиск), и вернуть свой собственный текст, если ничего не найдено.
Пример 2. IFERROR с VLOOKUP для возврата пустого места или 0, если ничего не найдено
Если вы не хотите ничего показывать, когда значение поиска не найдено, пусть IFERROR выведет сообщение пустая строка (""):
IFERROR(VLOOKUP( ... ),"")В нашем примере формула выглядит следующим образом:
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "")
Как вы можете видеть, он ничего не возвращает, если искомое значение отсутствует в списке поиска.
Если вы хотите заменить ошибку на нулевое значение , поставьте 0 в последнем аргументе:
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), 0)
Внимание! Функция Excel IFERROR ловит все виды ошибок, не только #N/A. Хорошо это или плохо? Все зависит от вашей цели. Если вы хотите замаскировать все возможные ошибки, то IFERROR Vlookup - это то, что нужно. Но во многих ситуациях это может быть неразумным приемом.
Например, если вы создали именованный диапазон для данных таблицы и неправильно написали это имя в формуле Vlookup, IFERROR поймает ошибку #NAME? и заменит ее на "Не найдено" или любой другой текст, который вы предоставите. В результате вы можете никогда не узнать, что ваша формула выдает неверные результаты, пока сами не обнаружите опечатку. В таком случае более разумным подходом будет отлавливать только ошибки #N/A.Для этого используйте формулу IFNA Vlookup в Excel 2013 и выше, IF ISNA VLOOKUP во всех версиях Excel.
Итог таков: будьте очень осторожны при выборе компаньона для вашей формулы VLOOKUP :)
Вложить IFERROR в VLOOKUP, чтобы всегда что-то находить
Представьте себе следующую ситуацию: вы ищете определенное значение в списке и не находите его. Какие варианты у вас есть? Либо получить ошибку N/A, либо вывести собственное сообщение. На самом деле, есть и третий вариант - если ваш первичный vlookup споткнулся, то ищите что-то другое, что точно есть!
Продолжая наш пример, давайте создадим некую приборную панель для наших пользователей, которая будет показывать им внутренний номер конкретного офиса. Что-то вроде этого:
Итак, как вытащить расширение из столбца B на основе номера офиса в D2? С помощью обычной формулы Vlookup:
=VLOOKUP($D$2,$A$2:$B$7,2,FALSE)
И это будет хорошо работать до тех пор, пока ваши пользователи вводят действительный номер в D2. Но что если пользователь вводит несуществующий номер? В этом случае пусть они позвонят в центральный офис! Для этого вы вставляете приведенную выше формулу в значение аргумент IFERROR, и поместите еще один Vlookup в значение_если_ошибка аргумент.
Полная формула немного длинная, но работает отлично:
=IFERROR(VLOOKUP("офис"&$D$2,$A$2:$B$7,2,FALSE),VLOOKUP("центральный офис",$A$2:$B$7,2,FALSE))
Если номер офиса найден, пользователь получает соответствующий внутренний номер:
Если номер офиса не найден, отображается внутренний номер центрального офиса:
Чтобы сделать формулу более компактной, можно использовать другой подход:
Во-первых, проверьте, присутствует ли число в D2 в колонке поиска (обратите внимание, что мы установили col_index_num к 1, чтобы формула искала и возвращала значение из столбца A): VLOOKUP(D2,$A$2:$B$7,1,FALSE)
Если указанный номер офиса не найден, то мы ищем строку "центральный офис", которая обязательно есть в списке поиска. Для этого первый VLOOKUP оборачиваем в IFERROR и помещаем всю эту комбинацию в другую функцию VLOOKUP:
=VLOOKUP(IFERROR(VLOOKUP(D2,$A$2:$B$7,1,FALSE), "центральный офис"),$A$2:$B$7,2)
Ну, немного другая формула, тот же результат:
Но зачем искать "центральный офис", спросите вы. Почему бы не указать внутренний номер непосредственно в IFERROR? Потому что внутренний номер может измениться в какой-то момент в будущем. Если это произойдет, вам придется обновить данные только один раз в исходной таблице, не заботясь об обновлении каждой из ваших формул VLOOKUP.
Как сделать последовательные VLOOKUP в Excel
В ситуациях, когда вам необходимо выполнить так называемую последовательный или прикованный Vlookups в Excel в зависимости от того, был ли предыдущий поиск успешным или неудачным, вложите две или более функций IFERROR для запуска ваших Vlookups по очереди:
IFERROR(VLOOKUP( ... ), IFERROR(VLOOKUP( ... ), IFERROR(VLOOKUP( ... ), "Не найдено")))Формула работает по следующей логике:
Если первый VLOOKUP ничего не находит, первый IFERROR фиксирует ошибку и запускает другой VLOOKUP. Если второй VLOOKUP не работает, второй IFERROR фиксирует ошибку и запускает третий VLOOKUP, и так далее. Если все VLOOKUP спотыкаются, последний IFERROR возвращает ваше сообщение.
Эта вложенная формула IFERROR особенно полезна, когда вам нужно выполнить Vlookup через несколько листов как показано в приведенном ниже примере.
Допустим, у вас есть три списка однородных данных в трех разных рабочих листах (офисные номера в данном примере), и вы хотите получить расширение для определенного номера.
Если предположить, что значение поиска находится в ячейке A2 текущего листа, а диапазон поиска - A2:B5 в трех разных листах (северном, южном и западном), то следующая формула работает отлично:
=IFERROR(VLOOKUP(A2,North!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,South!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,West!$A$2:$B$5,2,FALSE), "Не найдено")))
Таким образом, наша формула "цепочки Vlookups" ищет в трех разных листах в том порядке, в котором мы вложили их в формулу, и выводит первое найденное совпадение:
Вот как использовать IFERROR с VLOOKUP в Excel. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Доступные загрузки
Примеры формулы Excel IFERROR VLOOKUP