Оставление значения ячейки неизменным, если условие неверно

При использовании функции ЕСЛИ Vineet хочет сохранить старое значение в ячейке, если условие ложно. Другими словами, значение в ячейке, в которой используется функция ЕСЛИ, должно изменяться только в том случае, если условие, проверяемое функцией ЕСЛИ, истинно. Однако по умолчанию функция ЕСЛИ устанавливает значение 0, если условие ложно.

Функция ЕСЛИ может принимать до трех параметров. Первый параметр – это сравнение, которое должно быть выполнено, второй параметр – это то, что должно быть возвращено, если сравнение истинно, а третий – то, что должно быть возвращено, если сравнение ложно. Можно не указывать последний параметр, но если вы это сделаете, Excel вернет значение 0, если сравнение неверно. (Это то, что Винит видит в результате использования его функции ЕСЛИ.)

Таким образом, очевидное решение состоит в том, чтобы убедиться, что вы предоставляете функции ЕСЛИ что-то, что должно быть возвращено при сравнении ложный. Например, предположим, что ваша формула находится в ячейке B1, и вы сравниваете что-то в ячейке A1. Используемая вами формула может выглядеть так:

 = IF (A1  

Обратите внимание, что слова «до десяти» являются возвращается, если значение в A1 меньше 10. Если это условие не выполняется, возвращается значение в B1. Поскольку эта формула находится в ячейке B1, это означает, что предыдущее значение в ячейке возвращается, если условие ложно.

Это также означает, что формула содержит циклическую ссылку. Чтобы циклические ссылки работали нормально, вам нужно сообщить Excel, что они могут появляться на вашем листе. Выберите Инструменты | Опции | Вкладка «Расчет» и убедитесь, что установлен флажок Итерация. Excel теперь разрешает циклическую ссылку без жалоб.

Если вы не хотите разрешать циклическую ссылку на своем листе, то единственный выход - создать макрос, который обновляет значение в ячейке B1. на основе любых изменений в ячейке A1:

 Private Sub Workbook_SheetChange (ByVal Sh As Object, _ ByVal Target As Range) 'Посмотрите, связано ли изменение с нашей ячейкой Если нет (Application.Intersect (Target  , Range ("A1")) _ Is Nothing) Then If Range ("A1")  

Это простое макрос, добавленный в модуль ThisWorkbook, выполняется каждый раз, когда в книге происходит изменение. Если значение ячейки A1 изменяется (и только эта ячейка), тогда значение проверяется, чтобы увидеть, меньше ли оно 10. Если это так, то значение в ячейке B1 изменяется. Если это не так, то значение в ячейке B1 остается в покое.

Есть одна неприятность, о которой нужно помнить при любом из рассмотренных выше подходов, формуле или макросе. . Если значение в ячейке A1 (скажем) 15, тогда ячейка B1 будет содержать то, что было раньше, чем бы оно ни было. Если вы измените значение в ячейке A1 на (скажем) 7, то B1 изменится на «менее десяти».. «Это нормально, но с этого момента ячейка B1 никогда не изменится. Почему? Потому что, если вы затем измените ячейку A1 на значение больше 10, ячейка B1 будет содержать (как только что объяснено) то, что было раньше. И, поскольку теперь вы понимаете, что значение, которое было раньше, является результатом предыдущего истинного результата, который был «меньше десяти». Таким образом, истинно или ложно, формула или макрос с этого момента отображает текст «меньше десяти».

Оцените статью
Frestage.ru
Добавить комментарий