Мне нужно вернуть пустую ячейку из формулы Excel, но похоже, что Excel обрабатывает пустую строку или ссылку на пустую ячейку иначе, чем настоящая пустая ячейка. Так что по сути мне нужно что-то вроде
=IF(some_condition,EMPTY(),some_value)
Я пытался сделать такие вещи, как
=IF(some_condition,"",some_value)
и
=IF(some_condition,,some_value)
и предполагая, что B1 является пустой ячейкой
=IF(some_condition,B1,some_value)
но я полагаю, что ни одна из них не является истинно пустыми ячейками, поскольку они являются результатом формулы. Есть ли способ заполнить ячейку тогда и только тогда, когда будет выполнено какое-то условие, и в противном случае оставить ячейку действительно пустой?
РЕДАКТИРОВАТЬ: как рекомендовано, я попытался вернуть NA (), но для моих целей это тоже не сработало. Есть ли способ сделать это с VB?
РЕДАКТИРОВАТЬ: Я строю рабочий лист, который извлекает данные из других рабочих листов, отформатированный в соответствии с очень специфическими требованиями приложения, которое импортирует данные в базу данных. У меня нет доступа для изменения реализации этого приложения, и оно завершается ошибкой, если значение «» вместо фактически пустого.
источник
Ответы:
VBA
Тогда тебе придется использовать . Вы будете перебирать ячейки в вашем диапазоне, проверять условия и удалять содержимое, если они совпадают.Что-то вроде:
источник
VbNullString
Excel не имеет никакого способа сделать это.
Результатом формулы в ячейке в Excel должно быть число, текст, логическое (логическое) или ошибка. Не существует типа значения ячейки формулы «пусто» или «пусто».
Одна практика, которой я следовал, заключается в использовании NA () и ISNA (), но это может или не может действительно решить вашу проблему, поскольку существует большая разница в том, как NA () обрабатывается другими функциями (SUM (NA ( )) равно # N / A, а SUM (A1) равно 0, если A1 пусто).
источник
Да, это возможно.
Можно получить аннулирующую формулу, оценивающую до истинного поля, если условие выполнено. Он проходит проверку по
ISBLANK
формуле.Все, что вам нужно, это, скажем
GetTrueBlank
, установить именованный диапазон, и вы сможете использовать следующий шаблон, как и в вашем вопросе:Шаг 1. Поместите этот код в модуль VBA.
Шаг 2. В
Sheet1
вA1
ячейке добавить именованный диапазонGetTrueBlank
по следующей формуле:Вот и все. Дальнейших шагов нет. Просто используйте самоуничтожающую формулу. Положите в ячейку, скажем
B2
, следующую формулу:Приведенная выше формула в
B2
будет иметь значение trueblank, если вы введете 0 вA2
.Вы можете скачать демонстрационный файл здесь .
В приведенном выше примере вычисление формулы для trueblank приводит к пустой ячейке. Проверка результата с
ISBLANK
формулой дает положительные результаты в TRUE. Это формула, похожая на харакири. Формула исчезает из ячейки при выполнении условия. Цель достигнута, хотя вы, возможно, захотите, чтобы формула не исчезла.Вы можете изменить формулу так, чтобы она возвращала результат в соседнюю ячейку, чтобы формула не убивала себя сама. Посмотрите, как получить результат UDF в соседней ячейке .
Я сталкивался с примерами получения истинного фланга как результата формулы, показанного The FrankensTeam здесь: https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another- клетка
источник
Может быть, это обман, но это работает!
Мне также нужна была таблица, которая является источником для графика, и я не хотел, чтобы пустые или нулевые ячейки создавали точку на графике. Это правда, что вам нужно установить свойство графика, выбрать данные, скрытые и пустые ячейки, чтобы «показывать пустые ячейки как пробелы» (нажмите переключатель). Это первый шаг.
Затем в ячейках, которые могут закончиться с результатом, который вы не хотите выводить на график, поместите формулу в оператор IF с
NA()
такими результатами, как=IF($A8>TODAY(),NA(), *formula to be plotted*)
Это дает необходимый граф без точек, когда происходит недопустимое значение ячейки. Конечно, это оставляет все ячейки с этим недопустимым значением для чтения
#N/A
, и это грязно.Чтобы очистить это, выберите ячейку, которая может содержать недопустимое значение, затем выберите условное форматирование - новое правило. Выберите «форматировать только ячейки, которые содержат» и в описании правила выберите «ошибки» из выпадающего списка. Затем под форматом выберите шрифт - цвет - белый (или любой другой цвет фона). Нажмите различные кнопки, чтобы выйти, и вы должны увидеть, что ячейки с недопустимыми данными выглядят пустыми (они на самом деле содержат,
#N/A
но белый текст на белом фоне выглядит пустым). Тогда связанный график также не отображает точки недопустимых значений.источник
Вот как я сделал это для набора данных, который я использовал. Это кажется запутанным и глупым, но это была единственная альтернатива изучению того, как использовать решение VB, упомянутое выше.
q
поскольку ее нет нигде в моей таблице данных.q
ничего не заменил .Этот трехэтапный процесс превратил все «пустые» ячейки в «пустые» ячейки. Я попытался объединить шаги 2 и 3, просто заменив пустую ячейку на пустую, но это не сработало - мне пришлось заменить пустая ячейка с каким-то реальным текстом, затем замените этот текст пустой ячейкой.
источник
Если цель состоит в том, чтобы иметь возможность отображать ячейку как пустую, когда она фактически имеет значение ноль, то вместо использования формулы, которая приводит к пустой или пустой ячейке (так как
empty()
функции нет ),где вы хотите пустую ячейку, верните
0
вместо""
а затемустановите формат чисел для ячеек, например, так, чтобы вам приходилось придумывать, что вы хотите для положительных и отрицательных чисел (первые два элемента, разделенные точкой с запятой) В моем случае числа, которые у меня были, были 0, 1, 2 ... и я хотел, чтобы 0 отображалось пустым. (Я так и не понял, для чего использовался текстовый параметр, но это казалось обязательным).
источник
Попробуйте оценить ячейку, используя
LEN
. Если он содержит формулуLEN
, вернется0
. Если он содержит текст, он вернет больше, чем0
.источник
""
пусто.LEN(cell)>0
возвращает true, если есть число (включая ноль и включая, если число рассчитывается по формуле), и false, если пустая строка или пусто.Вау, удивительное количество людей неправильно поняли вопрос. Это легко сделать сотовый взгляд пустой. Проблема в том, что если вам нужно, чтобы ячейка была пустой, формулы Excel не могут возвращать «никакого значения», а могут только возвращать значение. Возвращение нуля, пробела или даже "" является значением.
Таким образом, вы должны вернуть «магическое значение», а затем заменить его без значения, используя поиск и замену или используя сценарий VBA. Хотя вы можете использовать пробел или "", мой совет - использовать очевидное значение, такое как "NODATE", "NONUMBER" или "XXXXX", чтобы вы могли легко видеть, где это происходит - найти довольно сложно "" в электронной таблице.
источник
Используйте
COUNTBLANK(B1)>0
вместоISBLANK(B1)
вашегоIF
утверждения.В отличие от
ISBLANK()
,COUNTBLANK()
считает""
пустым и возвращает 1.источник
Так много ответов, которые возвращают значение, которое выглядит пустым, но на самом деле не является пустой ячейкой в соответствии с запросом ...
По запросу, если вы действительно хотите формулу, которая возвращает пустую ячейку. Это возможно через VBA. Итак, вот код, чтобы сделать именно это. Начните с написания формулы для возврата ошибки # N / A везде, где вы хотите, чтобы ячейки были пустыми. Тогда мое решение автоматически очищает все ячейки, которые содержат эту ошибку # N / A. Конечно, вы можете изменить код, чтобы автоматически удалять содержимое ячеек на основе чего угодно.
Откройте «Visual Basic Viewer» (Alt + F11) Найдите интересующую книгу в проводнике проекта и дважды щелкните по ней (или щелкните правой кнопкой мыши и выберите код просмотра). Откроется окно «Просмотр кода». Выберите «Рабочая книга» в раскрывающемся меню (Общие) и «SheetCalculate» в раскрывающемся меню (Объявления).
Вставьте следующий код (на основе ответа JT Grimes) в функцию Workbook_SheetCalculate
Сохраните ваш файл как книгу с макросами
NB: Этот процесс похож на скальпель. Он удалит все содержимое всех ячеек, которые оцениваются с ошибкой # N / A, поэтому имейте в виду. Они уйдут, и вы не сможете получить их обратно, не вводя формулу, которую они использовали.
NB2: Очевидно, что вам нужно включить макросы, когда вы открываете файл, иначе он не будет работать, и ошибки # N / A останутся не восстановленными
источник
Этот ответ не полностью касается OP, но я уже несколько раз сталкивался с подобной проблемой и искал ответ.
Если вы можете при необходимости воссоздать формулу или данные (и из вашего описания это выглядит так, как будто вы можете), тогда, когда вы будете готовы запустить часть, которая требует, чтобы пустые ячейки были фактически пустыми , вы можете выбрать регион и запустите следующий макрос VBA.
это сотрет содержимое любой ячейки, которая в данный момент показывает
""
или имеет только формулуисточник
Я использовал небольшой взлом. Я использовал T (1), который возвратил пустую ячейку. T - это функция в Excel, которая возвращает свой аргумент, если это строка, а в противном случае пустая ячейка. Итак, что вы можете сделать, это:
источник
Для улучшения внешнего вида я использовал следующую работу:
Когда вы делаете какие-либо вычисления, "" выдаст вам ошибку, поэтому вы хотите рассматривать ее как число, поэтому я использовал вложенный оператор if для возврата 0 вместо "", а затем, если результат равен 0, это уравнение вернет ""
Таким образом, лист Excel будет выглядеть чистым ...
источник
Если вы используете функции поиска, такие как HLOOKUP и VLOOKUP, для переноса данных на рабочий лист, поместите функцию в скобки, и функция вернет пустую ячейку вместо {0}. Например,
Это вернет нулевое значение, если поисковая ячейка пуста:
Это вернет пустую ячейку, если ячейка поиска пуста:
Я не знаю, работает ли это с другими функциями ... Я не пробовал. Я использую Excel 2007 для достижения этой цели.
редактировать
Чтобы получить значение IF (A1 = "",,), возвращаемое как истинное, в одной ячейке должно быть два поиска, разделенных символом &. Самый простой способ сделать это - сделать второй поиск ячейкой, которая находится в конце строки и всегда будет пустой.
источник
Ну, пока это лучшее, что я мог придумать.
Он использует
ISBLANK
функцию, чтобы проверить, действительно ли ячейка пуста вIF
выражении. Если в ячейке есть что-то,A1
в этом примере даже символ ПРОБЕЛ,ячейки нет,
EMPTY
и в результате будет произведен расчет. Это будет препятствовать отображению ошибок вычислений, пока у вас не появятся числа для работы.Если ячейка является,
EMPTY
то ячейка вычисления не будет отображать ошибки вычисления. Если ячейка является,NOT EMPTY
то результаты вычисления будут отображены. Это выдаст ошибку, если ваши данные плохие, страшные#DIV/0
!Измените ссылки на ячейки и формулу, как вам нужно.
источник
Ответ положительный - вы не можете использовать функцию = IF () и оставить ячейку пустой. «Выглядит пустым» не то же самое, что пустой. Обидно, что две кавычки спина к спине не дают пустую ячейку, не стирая формулу.
источник
Google привел меня сюда с очень похожей проблемой, я наконец-то нашел решение, которое соответствует моим потребностям, оно может помочь кому-то еще ...
Я использовал эту формулу:
источник