Функция СОПОСТАВЛЕНИЯ Excel, похоже, нарушена. Описание проблемы и детали расследования. Есть какое-нибудь объяснение или решение этому?

Я довольно интенсивный и опытный пользователь Excel, привыкший работать с функциями ИНДЕКСИРОВАНИЯ и СОПОСТАВЛЕНИЯ, а также со строками, поэтому я также привык к типичным проблемам с ошибками в функции СОПОСТАВЛЕНИЯ из-за различного форматирования ячеек, незамеченных пробелов и тому подобного. Я также знаком с множеством решений такого рода проблем, таких как преобразование текста в числа и наоборот, с помощью функций TEXT() или VALUE() или более простых подходов, таких как добавление --, +0, *1, "" & или другие аналогичные операции для преобразования между форматами. То, что я обнаружил на этот раз, было совершенно другим видом ошибки, которая зависит от значения без изменения формата.

В своей электронной таблице я просто пытался найти, какая строка списка значений в "см" соответствует значению, полученному в другом месте, которое было в "мм". Поэтому я, предположительно, просто должен был сопоставить входное значение, разделенное на 10. Поначалу это работало, пока я не понял, что это не работает для определенных значений. В первом на изображении ниже видно, что match не может найти значение "55,025", но без проблем находит "64,025", хотя последующие ячейки в списке просто содержат значение из B4 минус значение рядом с ними в столбце A.

Error sample image

После того, как я не смог отследить ошибку, я создал электронную таблицу, чтобы протестировать несколько различных комбинаций и попытаться определить шаблон поведения функции СООТВЕТСТВИЯ. Но, во всяком случае, это еще больше смутило меня, показав, что нет только он ведет себя по-разному с разными значениями, но различные способы преобразования текста в числа также не ведут себя согласованно. На самом деле я определил 6 различных возможных сценариев, основанных на том, какие значения фактически введены.

Трудно обобщить результаты, поэтому вам следует просто изучить электронную таблицу и провести в ней свои собственные тесты. Я просто объясню его структуру, показанную на рисунке ниже.

Error investigation spreadsheet image

Базовым значением является значение ячейка D3 (серая), я просто добавил туда десятичные дроби, чтобы упростить ввод различных значений, введенных в B3 (синий). Ячейки оранжевого и желтого цветов в столбце D - это разные способы форматирования значения D3 (серого). То есть:

D7   ="" & D3/10
D11  =--D7
D15  =D3/10

Соответствует текстовому формату, текст преобразован в число и обычное число соответственно.

Зеленые ячейки внизу столбца D - это всего лишь список значений, в пределах которых выполняется поиск функцией СООТВЕТСТВИЯ, полученный путем вычитания значений из столбца C до значения в D18.

Далее справа (столбцы G:Q), строка 3 содержит СОВПАДЕНИЕ строк, которое должно найти искомое значение в зеленом массиве столбца D. В строке 5 указан тип модификации, реализованной для значений столбца D. Над ними (строки 6, 10, 14) выполняется проверка того, равны ли эти значения соответствующей ячейке в зеленом массиве столбца D. А ниже (строки 8, 12, 16) приведены фактические формулы СООТВЕТСТВИЯ для этих значений.

Под всем этим есть список различных значений, которые показывают каждый тип поведения, начиная от того, что они найдены в массиве независимо от изменений (если они являются числами), до того, что они вообще не найдены, с несколькими различными случаями между ними.

Вкладка "Testing_b" точно такая же, как вкладка "Тестирование", но значение для ячейки D18 вместо вставки из моей исходной электронной таблицы вводится вручную. Это приводит к другому набору странного поведения, даже несмотря на то, что первоначально вставленный предполагается, что значение должно быть идентичным значению предыдущей вкладки.

Вы можете загрузить таблицу ниже и проверить поведение различных перечисленных значений при вводе в ячейку B3 (синий). Допустимый диапазон в настоящее время составляет от 44 до 64.

Электронная таблица MATCH_ERRORS.xlsx

Я надеюсь, что кто-нибудь сможет найти какое-то объяснение всему этому.


*Редактировать (2020-05-07):

Возможные Проблемы С Округлением

Относительно округления проблемы как возможная основная причина, на которую указал Джастин Доуард, я заметил, что Excel, похоже, использует другой уровень точности при проверке того, равны ли две ячейки, чем при проверке соответствия двух ячеек (функция СООТВЕТСТВИЯ). Я только что провел простой тест, и эта разница составляет один или два порядка в зависимости от сравниваемых значений (рисунок ниже). Это все еще не объясняет, почему Excel каким-то образом изменяет фактическое значение ячейки с некоторым приближением, которое затем не соответствует предполагаемое значение этой ячейки. Значения, использованные в исходной задаче, даже близко не соответствуют уровню точности, при котором можно было бы ожидать возникновения потенциальных ошибок округления. Казалось бы, это просто указывает на, возможно, еще более серьезную основную проблему.

Rounding error test. Equal vs MATCH