Страницы: 1
RSS
проверка данных в ячейке, Не работают формулы при проверке данных
 
Добрый день!

Столкнулся с удивительным неодинаковым поведением формул.
Есть две ячейки E50 и E51.
Обе должны содержать отрицательные значения или ноль и при этом вторая должна быть больше или равна первой.

Требование отрицательности значений ввести просто - в Проверке данных указываем например формулу что значение <=0.
Сложнее обстоит дело с добавлением требования что одно значение больше или равно второму. Это условие надо проверять только если введены оба значения в ячейку.

Вписываю в ячейку E51 вот такую формулу:
=ИЛИ( И(E51<=0; НЕ(ЕЧИСЛО(E50))); И(E51<=0;E50>=E51))

Удивительно, но факт. Формула работает верно если ее внести в какуюнибудь ячейку на листе, однако она неверно работает если ее вставить в проверку данных дя ячейки.
Подскажите как такое может быть, что формула эта на листе дает ЛОЖЬ, однако в ячейку почемуто позволяется вставить значение (т.е. валидация проходит).
Опыт такой что ячейка E50 пустая, и вставляем в ячейку E51 спокойно положительное значение.
Изменено: Turman - 15.11.2016 19:26:12
 
Добрый вечер.

Единственное, что могу предположить - вы создаете формулу, которая пытается сослаться сама на себя.
Что бы произвести проверку на значения в двух ячейках, проверку необходимо писать в отдельной, которая будет на них ссылаться.

В примере, который Вы описали, вы указываете значение в ячейке E50, формулой в E51 пытаетесь проверить значение E51.
Цитата
Turman написал:
Вписываю в ячейку E51 вот такую формулу:
=ИЛИ( И(E51<=0; НЕ(ЕЧИСЛО(E50))); И(E51<=0;E50>=E51))
Как вариант, такую проверку можно реализовать при помощи условного форматирования.
Смотрите вложение :)

Надеюсь, что помогла.
 
макросом без непонятных танцев с бубнами.
Единственное не понятно как себя вести если мы хотим изменить одно из уже введенных значений на неверное
предположим у нас е50=-5, е51=-4. Условия выполняются и все довольны. Но вот мы захотели изменить значение е50 на -3 т.е. уже не будет выполняться условие е51>е50
Два варианта - не даем это сделать или очищаем ячейку е51?

хе.. третий вариант диалоговое окно для выбора одного из первых двух вариантов
Изменено: VideoAlex - 16.11.2016 03:09:35
 
Цитата
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.
А макросом не хотелось бы. Дополнительно вешать макросы не здорово- поскольку макросы вообще на паузу можно поставить и никаких проверок не будет тогда.
Изменено: Turman - 16.11.2016 12:37:57
 
Давайте тогда уж и без формул потому что их пересчитывание тоже можно отключить
 
Цитата
VideoAlex написал:
Давайте тогда уж и без формул потому что их пересчитывание тоже можно отключить
Если выбрать "Параметры вычислений" "вручную", то хоть формулы на листе и не обновляются автоматически, формулы в валидации еще работают.
 
Turman, кнопка цитирования не для ответа.
 
По-прежнему актуально. Переформулирую вопрос. Можно ли в валидационной формуле каким-то образом проверить на пустоту другую ячейку?
 
Цитата
Turman написал: проверить на пустоту другую ячейку
=если(длстр(адр_яч);"НЕ пусто";"Пусто")

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
Страницы: 1
Читают тему
Наверх