Неожиданное поведение VLOOKUP & MATCH - PullRequest
0 голосов
/ 13 февраля 2012

При использовании 0.1025 в качестве lookup_value для функций VLOOKUP или MATCH, формулы работают только тогда, когда значение жестко закодировано как число. При обращении к значению из другой ячейки формулы выдают ошибки # N / A. Как ни странно, проблема, кажется, устраняется, если сначала к контрольной ячейке применяется ROUND. Другое решение, которое работает, состоит в том, что если значение ячейки сначала умножается на 100, а затем на обратное значение, и все же 2 или 5 не работает. Подобное поведение происходит с 0,0875, 0,1175 и 0,1425.

Проблема иллюстрируется приведенными здесь формулами.

Скопируйте ниже и вставьте в ячейку A1.

0.1025  =CEILING(A3,0.0025) =A1=B1
0.14821 =VLOOKUP(B1,A:B,2,0)    
0.10163 =MATCH(B1,A:A,0)    
        =MATCH(0.1025,A:A,0)    
        =MATCH(ROUND(B1,4),A:A,0)   
        =MATCH(10.25/100,A:A,0) 
        =MATCH((B1*100)/100,A:A,0)  
        =MATCH((B1*2)/2,A:A,0)

выше дает результаты, как показано ниже.

0.1025  0.1025  TRUE
0.14821 #N/A    
0.10163 #N/A    
        1   
        1   
        1   
        1   
        #N/A    

Почему?

1 Ответ

0 голосов
/ 14 февраля 2012

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

Мы используем ROUND (), MROUND (),Функции CEILING () и FLOOR () точно сбрасывают значения до того, как они будут использованы по этой самой причине.

0.1025 действительно может быть таковым, если только вы не начнете форматировать эту ячейку для 8-10 десятичных значений.. Появляется ли больше чисел?

Вы можете очень легко удручающе продублировать это.В A1 введите 0.1025 , затем в A2 введите 0.1026 .
Теперь попробуйте формулу = EXACT (0,0001, A2-A1) .Результат будет FALSE .

Если вы запустите функцию EVALUATE FORMULA для этой ячейки, вы увидите, что микро-значение приводит к тому, что математическое значение равно 0,000100000000000003 вместо просто 0,0001 .

Таким образом, инструменты округления корректируют отображаемое значение до фактического значения, иВот почему мы делаем это.Ага, Excel!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...