Доброго дня форумчанам.
Возникла у меня такая вот странная проблема...
Функция ГПР() отказывается принимать значение 0,8 в качестве искомого (точнее, видимо просто ничего по нему не находит), если оно полученное с помощью функции ОКРУГЛВВЕРХ(). Тоже значение полученное другими способами принимается. Другие значения полученные с помощью ОКРУГЛВВЕРХ() тоже принимаются.
Формулы на Листе 3, таблица на Листе 5.
Странно...
0,61=0,7 (при округлении вверх), значение находится
0,71=0,8 (при округлении вверх), значение не находится.
Получается, что ищем число между 7,999999999999999 и 8,0
=ОКРУГЛ(ОКРУГЛВВЕРХ(0,71;1);1) - так работает...
Причину ошибки не нашел...
О, ну хоть решение нашлось)
Сам как-то не догадался. Спасибо!
Хотя конечно, и причину понять интересно бы было...
Это не решение - костыль.
Причину бы понять.
прикрепил пример, созданный в чистом файле.
Параллельно задал вопрос об ошибке на Планете
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=65988&TITLE_SEO=65988-oshibka-okrugleniya-okruglvverkh-ili-glyuk-gpr
Итак, в XML схему записываются значения не те, что отображаются. И выглядят они следующим образом:
Значение в K5:
<f>ROUNDDOWN(M5/N5,1)</f>
<v>0.8</v>
Значение в K6:
<f>ROUNDUP(M6/N6,1)</f>
<v>0.79999999999999993</v>
Значение в K7:
<f>ROUNDUP(E7/F7,1)</f>
<v>0.79999999999999993</v>
Поэтому и не находит. Как правило такие косяки проявляются, если файл был сформирован в программах типа 1С. При этом, если в К6 и К7 формулы заменить значениями и после этого F2+Enter - то все рассчитается корректно.
ВПР как ни странно, ищет данные бинарным типом и почему-то заглядывает внутрь XML значений, а не тех, которые отображаются в ячейках. Почему так - не скажу. Когда-то давно я это уже разбирал и задавал вопрос в тех.поддержку Microsoft - ничего вразумительного не ответили.
В К5 ОКРУГЛВНИЗ, в К6 ОКРУГЛВВЕРХ.
Почему, в таком случае, ОКРУГЛВВЕРХ с 0,6 работает?
ЦитироватьКак правило такие косяки проявляются, если файл был сформирован в программах типа 1С
Мой пример создан с чистого листа.
Витя, чудеса стандарта IEEE 754.
Для каких-то чисел вычисление пройдет верно, а для каких-то съедет. И как видно из моего предыдущего сообщения - мы попали в этой теме именно на одно из них. Витя, да ты и сам знаешь, что таких пар чисел миллионы.
ЦитироватьМой пример создан с чистого листа.
Верю. Т.к. у тебя проблема точно та же. В ячейке К4 значится:
<f>ROUNDUP(0.71,1)</f>
<v>0.79999999999999993</v>
Значит проблема именно в ОКРУГЛВВЕРХ. Вопрос-то в другом: почему ВПР упорно ищет не то, что отображается в ячейке, а то, что в схеме?
Ну и дабы окончательно убить: попробуй в файле записать 0,61 в ячейку А1. В А2 - формулу вида: =A1+0,1. Протяни ячеек на 20. В столбце В запиши формулу округлвверх. Все поплывет начиная с 0,71. Но. Теперь даже если вручную вбить значения в столбце А - формула все равно будет лажать. В XML схему она не перепрописывает новые значения, пока не прощелкать ячейки с формулами. Вот так вот...
Спасибо.
Глюк.
Начинаю сомневаться в функциях. Ведь ОКРУГЛВВЕРХ должна игнорировать стандарт. Вернее, исправлять его огрехи. Ан нет, не хочет.
Товарищ, vikttur! А что, если общий формат числа 0,79999999 преобразовать формулой
=--ТЕКСТ(A1;"0,##")
Вопрос не о костылях.
Вместо "ОКРУГЛВВЕРХ" можно применииь формулу
=HLOOKUP(CEILING(M6/N6;0,1);Лист5!$R$7:$AA$30;D6;FALSE)