Отображать пустым при ссылке на пустую ячейку в Excel 2010

27

У меня есть книга Excel 2010, которая содержит несколько отдельных листов. Ячейки на одном из листов связаны с отдельными ячейками на двух других листах в той же книге. Я использую прямую ссылку на ячейку, которая по существу говорит, что любое значение, введенное в определенную ячейку на одном листе, также заполняет ячейки на двух других листах. Для этого я использовал функцию (=) со ссылкой на ячейку.

Проблема, с которой я сталкиваюсь, заключается в том, что даже когда основная ячейка оставлена ​​пустой, ячейки, которые заполняются из этой основной ячейки, будут отображать 0, а не оставаться пустыми сами по себе.

Я хочу, чтобы подчиненные ячейки оставались пустыми, если основная ячейка, с которой они связаны, пуста.

Дейв
источник
Моя формула очень длинная, для меня также конструкция IF вряд ли приемлема, хороший вопрос, но я тоже не нашел достаточно хорошего ответа. {= IFERROR (INDEX (NEPŘÍMÝ.ODKAZ ("EsZkouska"); МАЛЕНЬКИЙ (KDYŽ ((INDEX (NEPŘÍMÝ.ODKAZ ("EsZkouska") ;; 1; 1) = "ČSN721180") * (INDEX (NEPŘÍMÝ.ODKAZ (" EsZkouska ") ;; 9; 1) =" RC_P_B "); RADEK (NEPŘÍMÝ.ODKAZ (" EsZkouska ")) - MIN (RADEK (NEPŘÍMÝ.ODKAZ (" EsZkouska "))) + 1" "); 1) ; 17; 1); "")}
Войтех Дональ
Можно использовать конструкцию IF в сочетании с этим подходом: stackoverflow.com/questions/22359452/… . Таким образом, вы можете создавать именованные формулы и использовать их в своем простом утверждении IF ...
Vojtěch Dohnal

Ответы:

49

Вам нужно заставить Excel обрабатывать содержимое ячейки как текстовое значение, а не число, что он делает автоматически с пустыми значениями.

=A2 & ""

Это заставит Excel сделать так, чтобы эта ячейка ссылалась на текстовое значение, тем самым предотвращая преобразование пробелов в нули.

wbeard52
источник
4
Вот это да! Я не могу поверить, что все оказалось так просто!
Скотт
1
Как решение имеет дело с форматированием ввода чисел? Мне кажется, что этот ответ уничтожает числовые данные. Конечно, вы не получаете 0, когда ячейка пуста, но вы также получаете текстовые данные вместо числовых ... Это проблема на практике или у вас есть какие-нибудь обнадеживающие слова?
ЛюдвигH
1
Это хранит это как текст. Однако, когда вы используете его в математическом уравнении, Excel должен преобразовать его обратно в число. На практике это решение будет развернуто только в отчете, в котором вы уже выполнили работу за кулисами на других листах или скрытых столбцах.
wbeard52
18

Вот три ответа:

1) Позволяя other.cell.reference представлять формулу ссылки, которая у вас есть после =(например,  Sheet17!$H$42), замените эту ссылку ссылкой на

=IF(other.cell.reference <>"",other.cell.reference, "")

2) Установите формат «Число» ваших связанных ячеек «Custom»: General;–General;.

3) В разделе «Параметры Excel», «Дополнительно», в разделе «Параметры отображения для этого листа» снимите флажок «Показывать ноль в ячейках с нулевым значением». Предупреждение: это приведет к исчезновению всех нулей на листе.

Скотт
источник
1
Первый вариант является неоптимальным, так как он требует ввода (или копирования) формулы дважды в ячейке. Это может быть особенно неприятно, когда у вас действительно длинная формула, а затем вам нужно отредактировать (или, что еще хуже, отладить) эту формулу позже. Второй вариант, кажется, не работает для меня, но, возможно, я делаю это неправильно. Третий, безусловно, не идеален, поскольку сфера его действия гораздо шире, чем можно было бы действительно пожелать. Неужели нет лучших вариантов?
Изи
@Iszi: Что касается первого варианта: я не говорю о вводе формулы дважды. Что касается исходного вопроса, я говорю о ситуации, когда Q1содержит (очень длинную) формулу и A1содержит =Q1; мы хотим измениться A1на то =IF(Q1<>"", Q1, ""), что вам больше никогда не придется менять. «Разве нет лучших вариантов?» Ну, этот вопрос бездействовал в течение девяти месяцев, и это все, что было опубликовано. Если эти ответы не достаточно хороши для вас, опубликуйте новый вопрос или назначьте вознаграждение за этот вопрос.
Скотт
Это более или менее то же самое. Хотя это разрешает некоторые трудности, связанные с необходимостью устранения неполадок в двух экземплярах одной формулы в одной ячейке, это также несколько усложняет ситуацию, добавляя в смесь другую (в противном случае ненужную) ячейку или группу ячеек. К сожалению, я полагаю, что действительно нет другого «красивого и чистого» ответа на этот вопрос.
Изи
Некоторое время назад я опубликовал связанный вопрос, и единственный стоящий ответ, который отличается от того, что здесь, включал сценарий VBA.
Изи
4

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

  • вам не нужны дополнительные ячейки, чтобы вставить формулу, а затем ссылаться на вторые ячейки
  • вам не нужно вводить формулу дважды
  • этот метод различает нулевое значение и пустую ячейку
  • не требует VBA
  • не требует именованных диапазонов

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

=IFERROR((A1 & "") * 1,"")

В этом случае A1 можно заменить любой ячейкой, включая другой лист, рабочую книгу или INDIRECT ().

Замечания о том, как это работает:
IFERROR () - для второго аргумента задана пустая строка, поэтому в случае ошибки мы получаем пустую строку. Таким образом, мы должны убедиться, что в исходной ячейке ничего не происходит, возникает ошибка.

Числовой метод . Укажите строковое значение источника, затем умножьте на 1. Литеральная строка emtpy * 1 = # ЗНАЧ. Строка с числовым значением автоматически преобразуется в числовое значение и ошибки не возникает.

rayzinnz
источник
Интересный. Почему вы думаете, что вам нужно "" & A1 & ""? Когда это дает разные результаты A1 & ""или "" & A1?
G-Man говорит: «Восстановите Монику»
@ G-человек: правильно и желательно. Спасибо, я обновил ответ.
rayzinnz
4

Есть еще одна хитрость: установите пустую ячейку в формулу ="". Смотрите подробное описание здесь.

Алексей Федорович
источник
Для меня это идеальное решение, поскольку ячеек, на которые я ссылаюсь, меньше, чем ячеек, на которые они ссылаются. Благодарность!
Кит
2

Я тоже не нашел лучшего решения, чем решение Скотта.

Но в сочетании с подходом отсюда это может быть почти терпимым, я думаю:

http://www.ozgrid.com/Excel/named-formulas.htm

Допустим, у меня есть такая формула

= IFERROR( INDEX(INDIRECT("EsZkouska");
  SMALL(IF((INDEX(INDIRECT("EsZkouska");;1‌​;1)="ČSN721180")*(INDEX(INDIRECT("EsZkouska");;9;1)="RC_P_B");
  ROW(INDIRECT"EsZkouska"))-MIN(ROW(INDIRECT("EsZkouska")))+1;"");1);17;1);"")

Эта формула считывает значение ячейки из таблицы данных с помощью условного выбора и представляет их на другом листе. У меня нет контроля над форматированием ячеек на листе данных.

Я иду, чтобы Вставить> Имя> Определить и в «Имена в книге» я создаю новое Имя «RC_P_B». Затем в поле «Относится к» я копирую свою формулу (без символов {} - это формула массива).

Затем вы можете использовать формулу Скотта без необходимости повторения всего текста формулы:

 {=IF(RC_P_B<>""; RC_P_B;"---")}

Я считаю, что это лучше, чем копировать всю формулу.

Войтех Донхал
источник
2

Я просто не использую формулу, чтобы преодолеть эту проблему. Все, что я делаю, - это условно форматирую ячейки, чтобы цвет шрифта был белым, если значение ячейки равно 0.

Firas
источник
5
Это имеет очевидную проблему с ячейками, которые имеют допустимое значение 0.
Дмитрий Григорьев
И у этого также есть обратная сторона замедления вычислений, особенно для больших электронных таблиц, так как формулы условного форматирования являются «сверх» изменчивыми. (Они также оцениваются каждый раз, когда экран перерисовывается.)
robinCTS
1

Если связанная ячейка не числовая, вы можете использовать оператор IF с ISTEXT:

=IF(ISTEXT(Sheet1!A2), Sheet1!A2, "")
Брэд Паттон
источник
1
Но если Sheet1!A2указанная ячейка ( в вашем примере) содержит число, будет отображаться пустая строка.
Скотт
Да, из вопроса не ясно, какие данные находятся в ячейке, на которую есть ссылки. Я подумал, что если бы он был числовым, он бы хотел нули.
Брэд Паттон
1

Я долго искал элегантное решение этой проблемы.

Я использовал формулу = if (a2 = "", "", a2) в течение многих лет, но я нахожу это немного громоздким.

Я попробовал выше предложение = a2 & "", и, хотя оно действительно работает, оно показывает число, которое на самом деле является текстом, поэтому форматирование чисел не может быть применено, и статистические операции не работают, такие как сумма, среднее, медиана и т. Д., Поэтому, если это выполнимо числа, которые вы ищете, не соответствуют требованиям.

Я экспериментировал с некоторыми другими функциями и нашел то, что я считаю самым элегантным решением на сегодняшний день. Продолжая приведенный выше пример:

= CELL ( "содержимое", А2)

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

Schaetzer
источник
1
Я только что попробовал это в Excel 2013. Когда A2пусто, это отображается 0. Вы уверены, что ничего не делаете с форматированием?
Скотт
1

Решение для Excel 2010:

  1. Открыть файл"
  2. Нажмите «Опции»
  3. Нажмите «Дополнительно»
  4. В разделе «Параметры отображения» для этого листа «BBBB»
  5. Снимите флажок «Показывать нулевое значение для ячеек с нулевым значением».
CBMISRA
источник
Я сказал это в (третий вариант)  моего ответа .
Скотт
0
Public Function FuncDisplayStringNoValue(MyCell As Variant) As String

Dim Result As Variant

If IsEmpty(MyCell) Then

   FuncDisplayStringNoValue = "No Value"

Else
   Result = CDec(MyCell)

   Result = Round(Result, 2)

   FuncDisplayStringNoValue = "" & Result

   End If

End Function
Рамон Салазар
источник
0

Я использовал условное форматирование, чтобы отформатировать шрифт, чтобы он был того же цвета, что и фон ячейки, где значение ячейки было равно нулю.

Butonic
источник
Как и на что это было похоже?
Сок Pimp IT
Это решение уже размещено на Firas 3 года назад !
robinCTS
-1

В Office 2013 у меня сработало:

=IF(A2=""," ",A2)

Где на первом наборе цитат нет пробела, а на втором множестве пробел.

Надеюсь это поможет

Энди
источник
Зачем вам место во втором наборе скобок? Не =IF(A2="", "", A2)работает так же хорошо? Как это будет отличаться от =IF(A2<>"", A2, "")? Тогда чем это отличается от ответа с наибольшим количеством голосов, который был дан более двух лет назад?
G-Man говорит: «Восстанови Монику»
-1

У меня была похожая проблема, и я думаю, что нашел метод для вас. Это исправило мои проблемы.

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

=A1

Однако в столбце A могут быть пустые исходные ячейки, которые должны оставаться пустыми в ссылочных ячейках столбца C, вы можете использовать это и перетащить вниз столбец.

=T(A1)

Что касается форматирования ячеек, ссылка (columnn C) должна быть общей.

Уилл Пратер
источник
Увы, это был вопрос, связанный с проездом: ОП пришел в Super User (почти три года назад), задал один вопрос и больше не вернулся. Таким образом, мы никогда не узнаем подробности его ситуации. Но, главным (если не главная ) функция Excel является хруст чисел. Если исходные данные (в вашем примере столбец A) содержат числа, ваш ответ не сможет заполнить целевые ячейки числовыми данными.
Скотт
Убедитесь, что форматирование вашей ячейки в ячейках, содержащих формулу = T (), имеет значение «Общий», а не «Текст». Потому что там, где я его использовал, он показывает цифры.
Уилл Пратер
Я проверил. Это генерал, и он становится пустым. (Excel 2013)
Скотт
Проблема может быть в том, что вы используете 2013 год, мой ответ я бы за 2010 год.
Уилл Пратер
Был ответ (теперь удален; вы можете увидеть его, только если ваш представитель ≥10000), который сообщил, что это не работает в Excel 2010.
Скотт
-1

Решение:
=IF('Wk1 Data-replace w dt bgn & end'!C2>0, 'Wk1 Data-replace w dt bgn & end'!C2, "")

Объяснение:
Для решения этой проблемы я использовал два набора Ifкоманд.

Часть первая команды:
я велел ячейке отображать содержимое ячейки ссылки, если ячейка ссылки содержала данные (Excel интерпретирует это как ячейку, значение которой больше 0)

Вторая часть команды:
я рассказал, как себя вести, если не было данных; "" означает оставить пустым

Примечание: Wk1 Data-replace w wt bgn & end '! C2 - моя контрольная ячейка.

Кристал Харрис
источник
(1) Это будет отображаться пустым, даже если указанная ячейка содержит 0 или отрицательное число. Вопрос требует, чтобы связывающая ячейка была пустой, только если указанная ячейка пуста . (2) Если вы внесете очевидное изменение и измените его на =IF('Wk1 … bgn & end'!C2<>"", 'Wk1 … bgn & end'!C2, ""), оно станет эквивалентным ответу, который был дан примерно четыре раза.
G-Man говорит: «Восстановите Монику»
-1

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

Джон Алонсо
источник
1
Как вы заполняете ячейку пробелом, и что вы подразумеваете под пробелом?
fixer1234
Извините, я должен был сказать космический персонаж. Таким образом, ячейка на самом деле не пуста. В исходной ячейке есть пробел, и пробел попадает в скопированную ячейку назначения.
Джон Алонсо
-1

У меня есть решение, работающее на меня:

IF(cell reference="","",cell reference)

Объяснение:

""равно пустой или пустой ячейке. Теперь я только включаю, если вокруг. Если ячейка пуста, сделайте ее пустой, в противном случае используйте ссылку на ячейку.

Себастьян Тидаре
источник
По сути, это то же самое, что и первое решение в superuser.com/a/515941
Арджан,
-2

Перейти к формату ячеек.

Затем выберите пользовательский формат и введите следующее: 0;-0;;@

Авик
источник
2
Можете ли вы объяснить, что это делает? Благодарю.
fixer1234 25.09.15
1
Это делает почти то же самое, что и второй вариант моего ответа на этот вопрос («Установите для формата« Число »связанных ячеек значение« Пользовательский »: General;–General;.»), А именно: (а) если значение является положительным числом, отобразить его целочисленное абсолютное значение; (b) если значение является отрицательным числом, отобразите его целочисленное абсолютное значение, которому предшествует -; (c) если значение равно нулю, ничего не отображать ; и (d) если значение не является числом, отобразите его текстовое значение. … (Продолжение)
Скотт
1
(Продолжение)… Однако эта версия имеет недостаток (то есть ошибку), заключающийся в том, что она округляет нецелые числа до ближайшего целого числа. ( Generalдает вам формат по умолчанию для чисел, включая необходимые десятичные цифры (но не включая -знак).) Кроме того, окончательный ;@вариант, по-видимому, не нужен (т. е. кажется, что он используется по умолчанию), поскольку мой ответ правильно отображает текстовые значения без изменений.
Скотт