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

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

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

=IF(A1<10,"under ten",B1)

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

Поскольку эта формула находится в ячейке B1, это означает, что предыдущее значение в ячейке возвращается, если условие ложно.

Это также означает, что формула содержит круговую ссылку. Чтобы циклические ссылки работали нормально, вам необходимо сообщить Excel, что они могут появляться на вашем листе. Если вы используете Excel 2010 или более позднюю версию, выполните следующие действия:

  1. Откройте вкладку Файл на ленте и щелкните Параметры. Excel отображает диалоговое окно «Параметры Excel».

  2. В левой части диалогового окна выберите Формулы. (См. Рис. 1.)

  3. Убедитесь, что установлен флажок Включить итеративное вычисление.

  4. Щелкните ОК.

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

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

Private Sub Workbook_SheetChange(ByVal Sh As Object, _   ByVal Target As Range)



' See if the change is related to our cell     If Not (Application.Intersect(Target, Range("A1")) _       Is Nothing) Then         If Range("A1") < 10 Then             Range("B1") = "under ten"

End If     End If End Sub

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

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

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (8264) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Leaving_a_Cell_Value_Unchanged_If_a_Condition_Is_False [Оставление значения ячейки неизменным, если условие ложно].