У меня есть две таблицы: table1 и table2. Я выполняю функцию VLOOKUP, чтобы заполнить 3 столбца от table2 до table1.

По какой-то причине формула не работает для первой строки и не находит точное совпадение из table2, даже если оно существует.

Я убедился, что оба столбца (для сравнения) имеют одинаковый формат (General) и нет лишних интервалов. Те же условия применяются и к остальным записям, и там все работает правильно.

table1 - вы можете увидеть недостающие совпадения для первой строки. table1

table2 - вы можете видеть, что совпадение действительно существует, но оно не отражается в table1. table2

Есть ли еще одна причина, по которой VLOOKUP не может найти совпадение для определенной записи?

2
inbal_bpr 25 Май 2016 в 15:49

3 ответа

Лучший ответ

Попробуйте напрямую оценить равенство для двух ячеек, которые, по вашему мнению, равны, например, если A2 - это значение, которое вы ищете, а Sheet2! A100 - это значение, которое, по вашему мнению, должно совпадать, попробуйте это в ячейке:

=(A2=Sheet2!A100)

Если это возвращает false, вы знаете, что в вашем vlookup есть проблема или ошибка форматирования.

Также попробуйте команду ленты Формулы / Вычислить формулу, чтобы пройти через vlookup на случай, если что-то не так.

2
GodLovesATrier 25 Май 2016 в 13:11

Вот проблема, с которой я столкнулся: моя формула ВПР возвращает правильное значение (1), если я ввожу значение для поиска (1.016) непосредственно в формулу, показанную в ячейке F54.

Однако, если я указал значение в столбце A как значение для поиска, формула вернула #N/A, как показано в ячейке F55.

(на самом деле я пытался ВПР для текущей строки плюс 0,015, т. е. VLOOKUP(A54+0.015, $A$3:$B$203, 2, FALSE))

Но если я использую функцию ROUND, то формула ВПР работает, как показано на F56.

Excel VLOOKUP issue

0
Sean 1 Авг 2018 в 09:54

Хорошо - вот вам пример использования. VLOOKUP и INDEX-MATCH возвращали # Н / Д для значений, которые "явно" равны. Очистил мои данные с помощью =TRIM(CLEAN(SUBSTITUTE(A1,CHAR(160)," "))), и это не сработало.

Затем я сравнил две ячейки, которые выглядели так, как будто у них были совпадающие значения, и они оценили как ЛОЖЬ (A1=B1 привело к ЛОЖЬ ).

Затем, в крайнем случае, я проверил каждое значение ASCII для каждого символа в двух ячейках и обнаружил, что знак «-» в одной ячейке отличается от «-» в другой ячейке. Первая ячейка имеет значение ASCII 63, а вторая ячейка имеет значение ASCII 45, что похоже на то же самое «-». Оказывается, 63 - это «короткое тире», а 45 - это стандартное тире или минусовый символ.

Чтобы оценить коды ASCII для каждого символа в строке, необходимо объединить функцию CODE с функциями MID или RIGHT после проверки ячеек на длину с помощью функции LEN.

Примеры:

LEN(A1) должно равняться LEN(B1)

Для первого символа в каждой ячейке:

CODE(A1) По умолчанию используется первый символ слева
CODE(MID(A1,2,1) возвращает ASCII для второго символа
CODE(MID(A1,3,1) возвращает ASCII для второго символа
и так далее

Если у вас много символов, вы можете разместить целочисленную последовательность рядом с вашей функцией CODE-MID и указать аргумент позиции на соответствующее целое число и просто скопировать вниз или через

Или же

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

1
K.Dᴀᴠɪs 14 Мар 2018 в 23:56