-1

= IF(VLOOKUP(D4, '[05.14_Wave 5 Priority 14 (Big+Cranberry)) Технические характеристики.xlsx] Big'!$ B:$ B, 1, FALSE), "Project BIG", IF(VLOOKUP(D4, '[05.14_Wave 5 Priority 14 (Big+Cranberry)) Specification.xlsx] Cran'!$ B:$ B, 1, ЛОЖЬ), "Project Cranberry", ЕСЛИ (VLOOKUP(AH4, «[05.14_Wave 5 Приоритет 14 (Big+Cranberry)) Спецификации. Xlsx] SMP BIG List»!$ E:$ E, 1, FALSE), «Project BIG (оригинал)», IF(VLOOKUP(AH4, «[05.14_Wave 5 Priority 14 (Big+Cranberry)). Спецификации. 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 ответа3

1
=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. Проверено несколько из них вручную, я уверен, что это решение работает.

Я благодарю вас всех и надеюсь, что это полезно для следующего человека!

0

Как уже было предложено, вам нужно проверить, возвращаете ли вы результат. Поскольку вы хотите только проверить существование, функция 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)",
    ""))))

Вы можете сохранить перевод строки в своей формуле, чтобы помочь вам лучше понять ее.

0

Оберните каждый VLookup в NOT(ISERROR()), чтобы достичь того, что вы ищете:

=IF(NOT(ISERROR(VLOOKUP(A1,sheetname!A:A,1,FALSE))),"some statement","another vlookup")

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .