У меня есть две таблицы: table1
и table2
. Я выполняю функцию VLOOKUP
, чтобы заполнить 3 столбца от table2
до table1
.
По какой-то причине формула не работает для первой строки и не находит точное совпадение из table2
, даже если оно существует.
Я убедился, что оба столбца (для сравнения) имеют одинаковый формат (General
) и нет лишних интервалов. Те же условия применяются и к остальным записям, и там все работает правильно.
table1 - вы можете увидеть недостающие совпадения для первой строки.
table2 - вы можете видеть, что совпадение действительно существует, но оно не отражается в table1
.
Есть ли еще одна причина, по которой VLOOKUP
не может найти совпадение для определенной записи?
3 ответа
Попробуйте напрямую оценить равенство для двух ячеек, которые, по вашему мнению, равны, например, если A2 - это значение, которое вы ищете, а Sheet2! A100 - это значение, которое, по вашему мнению, должно совпадать, попробуйте это в ячейке:
=(A2=Sheet2!A100)
Если это возвращает false, вы знаете, что в вашем vlookup есть проблема или ошибка форматирования.
Также попробуйте команду ленты Формулы / Вычислить формулу, чтобы пройти через vlookup на случай, если что-то не так.
Вот проблема, с которой я столкнулся: моя формула ВПР возвращает правильное значение (1), если я ввожу значение для поиска (1.016) непосредственно в формулу, показанную в ячейке F54
.
Однако, если я указал значение в столбце A
как значение для поиска, формула вернула #N/A
, как показано в ячейке F55
.
(на самом деле я пытался ВПР для текущей строки плюс 0,015, т. е. VLOOKUP(A54+0.015, $A$3:$B$203, 2, FALSE)
)
Но если я использую функцию ROUND
, то формула ВПР работает, как показано на F56
.
Хорошо - вот вам пример использования. 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 и указать аргумент позиции на соответствующее целое число и просто скопировать вниз или через
Или же
Вы можете найти странный нечисловой символ и просто проверить его для обеих ячеек.
Похожие вопросы
Новые вопросы
excel
Только для вопросов по программированию объектов или файлов Excel или по разработке формул. Вы можете комбинировать тег Excel с тегами и вопросами VBA, VSTO, C#, VB.NET, PowerShell, OLE и другими тегами и вопросами, связанными с программированием, если это применимо. НЕ используйте с другим программным обеспечением для работы с электронными таблицами, например [google-sheets].