Показувати порожнім, коли посилається на порожню клітинку в Excel 2010


27

У мене є робоча книга Excel 2010, яка містить низку окремих робочих таблиць. Осередки на одному з аркушів пов’язані з окремими клітинками на двох інших робочих аркушах у цьому ж робочому зошиті. Я використовую пряму посилання на клітинку, яка по суті говорить про те, що будь-яке значення вводиться до певної комірки на одному аркуші, також заповнюється клітинками на двох інших аркушах. Для цього я використав функцію (=) з посиланням на комірки.

Проблема, з якою я стикаюся, полягає в тому, що навіть коли первинна клітина залишиться порожньою, клітини, які заповнюються з цієї первинної комірки, будуть відображати 0, а не залишатись порожніми.

Я хочу, щоб підпорядковані комірки залишалися порожніми, якщо первинна комірка, з якою вони пов’язані, порожня.


Моя формула дуже довга, для мене також ця конструкція навряд чи прийнятна, хороший питання, але я теж не знайшов достатньо хорошої відповіді. {= IFERROR (INDEX (NEPŘÍMÝ.ODKAZ ("EsZkouska"); SMALL (KDYŽ ((INDEX (NEPŘÍMÝ.ODKAZ ("EsZkouska");; 1; 1) = "ČSN721180") * (INDEX (NEPŘÍMÝ.ODKAZ (" EsZkouska ") ;; 9; 1) =" RC_P_B "); ŘÁDEK (NEPŘÍMÝ.ODKAZ (" EsZkouska ")) - MIN (ŘÁDEK (NEPŘÍMÝ.ODKAZ (" EsZkouska "))) + 1;" "); 1) ; 17; 1); "")}
Vojtěch Dohnal

Можна використовувати конструкцію ІФ у поєднанні з таким підходом: stackoverflow.com/questions/22359452/… . Так, ви можете створити іменовані формули та використовувати їх у вашому простому IF-повідомленні ...
Vojtěch Dohnal

Відповіді:


49

Потрібно змусити Excel розглядати вміст комірки як текстове значення замість числа, що робить це автоматично з порожніми значеннями.

=A2 & ""

Це змусить Excel зробити цю клітинку посиланням на текстове значення, тим самим запобігаючи перетворенню пробілів у нулі.


4
Оце Так! Я не можу повірити, що це виявилося так просто!
Скотт

1
Як рішення стосується форматування введення числа? Мені здається, ніби ця відповідь знищує числові дані. Звичайно - ви не отримуєте 0, коли клітинка порожня, але ви також отримуєте текстові дані замість числових ... Це питання на практиці чи у вас є заспокійливі слова?
LudvigH

1
Він зберігає його як текст. Однак, коли ви використовуєте його в математичному рівнянні, Excel повинен перетворити його в число. Однак на практиці ви розгортаєте це рішення лише у звіті, де ви вже зробили роботу за кадром на інших робочих аркушах або прихованих стовпцях.
wbeard52

18

Ось три відповіді:

1) Дозволити другу.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,"")

А1 у цьому випадку може бути замінена будь-якою коміркою, включаючи інший аркуш, робочу книгу або INDIRECT ().

Примітки щодо того, як це працює:
IFERROR () - другий аргумент встановлюється в порожній рядок, тож у випадку помилки ми отримуємо порожню рядок. Тому нам потрібно переконатися, що якщо вихідна комірка порожня, помилка спрацьовує.

Числовий метод : Струфікуйте вихідне значення, а потім помножте на 1. Буквальний рядок emtpy * 1 = # VALUE, Рядок з числовим числом автоматично перетворюється на числове і помилка не виникає.


Цікаво. Чому ви вважаєте, що вам потрібно "" & A1 & ""? Коли це дає різні результати від A1 & ""або "" & A1?
G-Man каже: "Відновіть Моніку"

@ G-man: правильний та бажаний. Дякую, я оновив відповідь.
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.


5
Це очевидна проблема з клітинками, які мають легітне значення 0.
Дмитро Григор'єв

І це також має мінус уповільнення обчислень, особливо для великих електронних таблиць, оскільки формули умовного форматування є "супер" мінливими. (Вони також оцінюються щоразу, коли екран перефарбовується.)
robinCTS

1

Якщо пов'язана комірка нечислова, ви можете використовувати оператор IF з ISTEXT:

=IF(ISTEXT(Sheet1!A2), Sheet1!A2, "")

1
Але якщо посилається комірка ( Sheet1!A2у вашому прикладі) містить число, це відобразить нульовий рядок.
Скотт

Так, з питання не було зрозуміло, які дані є у посиланні. Я подумав, що якщо він буде числовим, він захоче нулі.
Бред Паттон

1

Я довго шукав елегантне рішення цього питання.

Я використовую формули = якщо (a2 = "", "", a2) протягом багатьох років, але вважаю, що це трохи громіздко.

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

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

= CELL ("вміст", A2)

повертає числове значення, яке може бути відформатоване як число, і воно повертає порожнім, коли посилається клітинка порожня. Чомусь таке рішення, схоже, не з’являється в жодних знайдених в Інтернеті пропозицій, але це


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

1

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

  1. Відкрити файл"
  2. Натисніть "Параметри"
  3. Натисніть "Додатково"
  4. У розділі "Параметри відображення" для цього робочого аркуша "BBBB"
  5. Зніміть прапорець "Показати нульове значення для комірок, які мають нульове значення".

Я сказав це в (третій варіант)  своєї відповіді .
Скотт

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

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


Як і як це виглядало?
Pimp Juice IT

Це рішення вже розміщено на Firas 3 роки тому !
robinCTS

-1

Що працювало для мене в Office 2013:

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

Там, де на першому наборі цитат немає місця, а на другому - пробіл.

Сподіваюся, це допомагає


Для чого потрібен простір у другому наборі дужок? Не =IF(A2="", "", A2)працює так добре? Чим це відрізнятиметься =IF(A2<>"", A2, "")? Тоді чим це відрізняється від відповіді з найвищим голосом, яку було дано понад два роки тому?
G-Man каже: «Відновіть Моніку»

-1

У мене була подібна проблема, і я думаю, що знайшов для вас метод. Це вирішило мої проблеми.

Якщо ви хочете, щоб стовпець C посилався на стовпчик А, і писав лише формулу для опорної комірки, ви використовуєте це і перетягуєте стовпець вниз.

=A1

Однак у стовпці А можуть бути вихідні комірки, які є порожніми, і вони повинні залишатись порожніми в контрольних комірках у стовпці С, ви можете використовувати це та перетягнути стовпець вниз.

=T(A1)

Що стосується форматування комірок, посилання (стовпчик C) повинно бути загальним.


На жаль, це було питання про привід - ОП прийшов до Супер Користувача (майже три роки тому), задав це одне запитання, і жодного разу не повернувся. Отже, ми ніколи не можемо дізнатися подробиці його ситуації. Але, головним (якщо не головна ) функція Excel є хрускіт чисел. Якщо вихідні дані (стовпець А у вашому прикладі) містять цифри, ваша відповідь не може заповнити цільові комірки числовими даними.
Скотт

Переконайтесь, що ваша клітинка формується у клітинках, що містять формулу = 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 Заміна даних w dt bgn & end '! C2 - це моя контрольна комірка.


(1) Це відобразиться порожнім, навіть якщо посилається комірка містить 0 або від'ємне число. Питання хоче, щоб зв'язувальна комірка була порожньою, лише якщо посилається комірка порожня . (2) Якщо ви внесете очевидні зміни і зміните це =IF('Wk1 … bgn & end'!C2<>"", 'Wk1 … bgn & end'!C2, ""), воно стане еквівалентним відповіді, яку вже дано приблизно чотири рази.
G-Man каже: "Відновіть Моніку"

-1

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


1
Як ви заповнюєте клітинку порожньою, і що ви маєте на увазі під порожнім?
fixer1234

Вибачте, я повинен був сказати космічний персонаж. Таким чином, клітинка насправді не порожня. У вихідній комірці Tha є простір у ній, і простір потрапляє до скопійованої в комірку призначення.
Джон Алонсо

-1

У мене є рішення, яке працює для мене:

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

Пояснення:

""дорівнює порожній або порожній комірці. Тепер я лише повертаю if if. Якщо клітинка порожня, зробіть її порожньою, інакше використовуйте посилання на комірку.


Це в основному те саме, що перше рішення в superuser.com/a/515941
Арджан

-2

Перейдіть до форматування комірок.

Потім виберіть спеціальний формат і введіть наступне: 0;-0;;@


2
Чи можете ви пояснити, що це робить? Спасибі.
fixer1234

1
Це майже те саме, що і другий варіант моєї відповіді на це запитання («Встановіть формат« Число »ваших зв’язаних комірок на« Спеціальний »: General;–General;.») - а саме (a) якщо значення є додатним числом, відобразити його ціле абсолютне значення; (b) якщо значення є від’ємним числом, відобразить його ціле абсолютне значення, перед яким передує -; (c) якщо значення дорівнює нулю, нічого не відображайте ; та (d) якщо значення не є числом, відобразити його текстове значення. … (Продовження)
Скотт

1
(Протяг)… Однак у цієї версії є недолік (тобто помилка), що вона округляє не цілі числа до найближчого цілого числа. ( Generalнадає формат за замовчуванням для цифр, включаючи десяткові цифри за необхідності (але не включаючи -знак).) Також фінал ;@видається непотрібним (тобто, здається, це за замовчуванням), оскільки моя відповідь правильно відображає текстові значення без модифікацій.
Скотт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.