EXCEL VLOOKUP возвращает #NA, если условие IF " "
=IF(VLOOKUP(D4,'[05.14_Wave 5 Priority 14 (Big+Cranberry)) Specification.xlsx]Big'!$B:$B,1,FALSE),"Project BIG",IF(VLOOKUP(D4,'[05.14_Wave 5 Приоритет 14 (Big + Cranberry) Технические характеристики.xlsx]Cran'!$B:$B,1,FALSE),"Project Cranberry",IF(VLOOKUP(AH4,'] [05.14_Wave 5 Приоритет 14 (Big + Cranberry)) Specifications.xlsx]SMP BIG List'!$E:$E,1,FALSE),"Project BIG(Original)",IF(VLOOKUP(AH4,'[05.14_Wave 5 Priority 14 (Big+Cranberry)) Specifications.xlsx]SMP BIG List'!$G:$G,1,FALSE),"Project BIG(New)"," "))))
Выше приведен код Excel, который я использую для перекрестной проверки артикулов на других листах. Если VLOOKUP найден, я хочу, чтобы [if_true_value] указывал, на каком листе он находится (т. Е. "Project BIG"), если VLOOKUP не найден, [if_false_value] запускает другой VLOOKUP для поиска другого листа. Последнее [if_false_value] это "", которое я просто хотел пустую ячейку, если SKU не найден. Однако я получаю #N/A это клетки.
Итак, мой вопрос: это правильный способ использования VLOOKUP? На самом ли деле происходит перебор условий истина / ложь до конца кода? И какие-либо предложения по улучшению этого?
Спасибо за ваше время!
3 ответа
=IF(ISNA(VLOOKUP($D4,'[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]Big Sku List '!$C:$C,1,FALSE)),
IF(ISNA(VLOOKUP($D4,'[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]Cranberry Sku List'!$I:$I,1,FALSE)),
IF(ISNA(VLOOKUP(AH4,'[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]SMP BIG List'!$E:$E,1,FALSE)),
IF(ISNA(VLOOKUP(AH4,'[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]SMP BIG List'!$G:$G,1,FALSE)),
"NO","Project BIG(NEW)"),"Project BIG(Original)"),"Project Cranberry"),"Project BIG")
Это то, что я придумал.
ISNA проверит значение VLOOKUP, и если оно истинно (#N/A), оно выполнит еще один VLOOKUP по всей цепочке, через разные листы. Тогда "ложные" утверждения говорят мне, где был найден VLOOKUP. Проверено несколько из них вручную, я уверен, что это решение работает.
Я благодарю вас всех и надеюсь, что это полезно для следующего человека!
Как уже было предложено, вам нужно проверить, возвращаете ли вы результат. Поскольку вы хотите только проверить существование, функция VLOOKUP немного излишня. Я бы предложил более простую функцию MATCH с проверкой, чтобы увидеть, возвращает ли она номер строки (найдено) или ошибку (не найдена).
=IF(ISNUMBER(MATCH(D4, '[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]Big'!$B:$B, 0)), "Project BIG",
IF(ISNUMBER(MATCH(D4, '[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]Cran'!$B:$B, 0)), "Project Cranberry",
IF(ISNUMBER(MATCH(AH4, '[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]SMP BIG List'!$E:$E, 0)), "Project BIG(Original)",
IF(ISNUMBER(MATCH(AH4, '[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]SMP BIG List'!$G:$G, 0)), "Project BIG(New)",
""))))
Вы можете сохранить перевод строки в своей формуле, чтобы помочь вам лучше понять ее.
Оберните каждый VLookup в NOT(ISERROR()), чтобы достичь того, что вы ищете:
=IF(NOT(ISERROR(VLOOKUP(A1,sheetname!A:A,1,FALSE))),"some statement","another vlookup")