Столкнулся с удивительным неодинаковым поведением формул. Есть две ячейки E50 и E51. Обе должны содержать отрицательные значения или ноль и при этом вторая должна быть больше или равна первой.
Требование отрицательности значений ввести просто - в Проверке данных указываем например формулу что значение <=0. Сложнее обстоит дело с добавлением требования что одно значение больше или равно второму. Это условие надо проверять только если введены оба значения в ячейку.
Вписываю в ячейку E51 вот такую формулу: =ИЛИ( И(E51<=0; НЕ(ЕЧИСЛО(E50))); И(E51<=0;E50>=E51))
Удивительно, но факт. Формула работает верно если ее внести в какуюнибудь ячейку на листе, однако она неверно работает если ее вставить в проверку данных дя ячейки. Подскажите как такое может быть, что формула эта на листе дает ЛОЖЬ, однако в ячейку почемуто позволяется вставить значение (т.е. валидация проходит). Опыт такой что ячейка E50 пустая, и вставляем в ячейку E51 спокойно положительное значение.
Единственное, что могу предположить - вы создаете формулу, которая пытается сослаться сама на себя. Что бы произвести проверку на значения в двух ячейках, проверку необходимо писать в отдельной, которая будет на них ссылаться.
В примере, который Вы описали, вы указываете значение в ячейке E50, формулой в E51 пытаетесь проверить значение E51.
Цитата
Turman написал: Вписываю в ячейкуE51 вот такую формулу: =ИЛИ( И(E51<=0; НЕ(ЕЧИСЛО(E50))); И(E51<=0;E50>=E51))
Как вариант, такую проверку можно реализовать при помощи условного форматирования. Смотрите вложение
макросом без непонятных танцев с бубнами. Единственное не понятно как себя вести если мы хотим изменить одно из уже введенных значений на неверное предположим у нас е50=-5, е51=-4. Условия выполняются и все довольны. Но вот мы захотели изменить значение е50 на -3 т.е. уже не будет выполняться условие е51>е50 Два варианта - не даем это сделать или очищаем ячейку е51?
хе.. третий вариант диалоговое окно для выбора одного из первых двух вариантов
vellynsa написал: Единственное, что могу предположить - вы создаете формулу, которая пытается сослаться сама на себя. Что бы произвести проверку на значения в двух ячейках, проверку необходимо писать в отдельной, которая будет на них ссылаться.
Спасибо за вариант с условным форматироваием! Работает, но хотелось запретить ввод таких значений, а не подсвечивать. Самое интересное, что в формуле валидации для ячейки E51 можно использовать значение в другой ячейке Е50, но только если E50 не пуста. И если например в E50 стоит -40, то та самая формула валидации для E51 даст ввести значение -10, но не даст ввести -50. А вот если теперь E50 пусто, то валидация не срабатывает и позволяет ввести +50 в E51. Похоже неверно обрабатывается формула ЕЧИСЛО() в формуле валидации.
Цитата
VideoAlex написал: Единственное не понятно как себя вести если мы хотим изменить одно из уже введенных значений на неверное предположим у нас е50=-5, е51=-4. Условия выполняются и все довольны. Но вот мы захотели изменить значение е50 на -3 т.е. уже не будет выполняться условие е51>е50 Два варианта - не даем это сделать или очищаем ячейку е51?
Лучше не давать такое вводить. Если захотелось изменить E50 и при этом нарушается условие на E51, то можно предварительно стереть E51. А макросом не хотелось бы. Дополнительно вешать макросы не здорово- поскольку макросы вообще на паузу можно поставить и никаких проверок не будет тогда.