Excel IFERROR & VLOOKUP - ловушка #N/A и другие ошибки

  • Поделись Этим
Michael Brown

В этом уроке мы рассмотрим, как использовать функции 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

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.