Если у вас есть формула на листе, а ячейка, на которую ссылается формула, пуста, формула по-прежнему возвращает нулевое значение. Например, если у вас есть формула = A3, то формула возвращает содержимое ячейки A3, если ячейка A3 не пуста. В этом случае формула возвращает нулевое значение.

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

Однако вы можете немного расширить формулу, чтобы она возвращала пустую строку. Вместо использования = A3 в качестве формулы вы должны использовать следующее:

=IF(ISBLANK(A3),"",A3)

В этой формуле используется ISBLANK, который возвращает либо True, либо False, в зависимости от того, является ли указанная ячейка (A3) пустой или нет. Затем функция ЕСЛИ возвращает пустую строку («»), если A3 пуст, или использует значение из A3, если A3 не пуст.

Независимо от того, что возвращает формула, вы все равно можете использовать ее результат в других формулах, и он будет работать нормально. Даже если он возвращает пустую строку, он все равно обрабатывается другими формулами, как если бы он содержал ноль.

В областях, где обработка ячейки, как если бы она содержала ноль, может быть проблематичной (например, когда вы наносите на график результаты формулы), вы можете немного изменить формулу, как показано здесь:

=IF(ISBLANK(A3),NA(),A3)

Эта формула возвращает ошибку # N / A, если A3 пуст. Эта ошибка распространяется на другие формулы, которые ссылаются на эту формулу, но ошибка # N / A полностью игнорируется при построении диаграммы.

Хотя приведенные выше решения подходят для большинства людей, некоторым действительно хотелось бы, чтобы целевая ячейка была действительно пустой, если исходная ячейка пуста. Например, вы можете захотеть, чтобы ячейка B7 была пустой, если ячейка A3 пуста. Если вы поместите формулу в ячейку B7 (как уже обсуждалось), тогда ячейка B7 не будет пустой — она ​​содержит формулу.

Если это ваша цель — истинная «пустота», то вы можете достичь ее только с помощью макроса. Макрос должен будет проверить, была ли изменена исходная ячейка. Если это так, то все, что находится в источнике, необходимо скопировать в целевую ячейку.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rMonitor As Range     Dim rTarget As Range

Set rMonitor = Range("A3")

Set rTarget = Range("B7")



If Not Intersect(Target, rMonitor) Is Nothing Then         rMonitor.Copy rTarget     End If

Set rMonitor = Nothing     Set rTarget = Nothing End Sub

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

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

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

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

Этот совет (2174) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Returning_Zero_When_a_Referenced_Cell_is_Blank [Возвращение нуля, когда указанная ячейка пуста].