Страницы: 1
RSS
Условное форматирование для пустой ячейки
 
Здравствуйте. Есть таблица с данными. Задача: в пустых ячейках или ячейках, содержащих "0", отображать "-". Применив условное форматирование не получается использовать соответствующий текстовый формат "-". Ячейка остаётся пустой. Пример во вложении.
При этом, например, заливка ячейки условным форматированием нормально срабатывает на пустую ячейку.
 
lipun, условное форматирование на сколько мне известно ен может вставлять данные в ячейку но визуально может подсветить цветом или/и сменишь формат(шрифт и т.п.) т.е. ячейка так и останется пустой
Изменено: Mershik - 28.12.2018 10:20:06
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, Может отобразить "-" - в примере это у кстати есть, а вот почему на пустые не реагирует вопрос.
попробовал через формулу - не сработала.  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 

Mershik, но ведь условное форматирование, кроме заливок, подразумевает, так же, и всё богатство текстовых форматов, среди которых есть и подстановка символов..

Изменено: lipun - 28.12.2018 10:51:50
 
Попробовал через    #"-"  тоже не срабатывает. При нуле отображает, при пустой - нет.
Изменено: Dyroff - 28.12.2018 11:10:59
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Цитата
Dyroff написал:
#"-"  должно сработать
Не получается. Попробуйте это сделать в моём примере, пожалуйста.
 
lipun,Я думаю что тут скорее всего не получается, потому, что произойдет некое нарушение самой логики, ведь если в ячейке что-то появится, что она уже не будет пустой.
То есть чтобы помять текстовый формат-  в ячейке должно что-то находиться, а тут пустота, нечего менять.
Как вариант, сначала вместо пустоты что-то помещать туда, формулой например, а потом уже менять формат условным форматированием.
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Как вариант, попробовать внести это значение макросом.
Измените диапазоны на нужные
Код
    Sub Test()
With Worksheets("Лист1") 'Измените названия листа на нужный
        Set Rng = .Range("E8:E10") 'задайте тут свой диапазон

        For Each n In Rng
            If n = "" Or n = 0 Then
           n.Value = "-"
                                      
            End If
                    Next n
    End With
End Sub
Изменено: Dyroff - 28.12.2018 12:06:25
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Цитата
Dyroff написал:
Я думаю что тут скорее всего не получается, потому, что произойдет некое нарушение самой логики, ведь если в ячейке что-то появится, что она уже не будет пустой.
Это было бы так, если бы создатели Экселя своими руками не прописали в Условном форматировании условие ячейки "Пустая" :) А все форматы, включая текстовые,  - это нечто, не являющееся содержимым ячейки, но ее свойством.
Спасибо за макрос! Попробую его прикрутить к своей таблице.
Маленькая просьба, я плох в макросах.... Как прописать, чтобы он применялся только к выделенному диапазону?
Изменено: lipun - 28.12.2018 12:08:38
 
в доп. ячейке не хотите формулой:  =ЕСЛИ(E8>0;E8;"-")
 
Увы, нет. Таблица очень большая и неоднородная, с кучей объединенных ячеек, часть из которых содержат текст. Формат спущен "сверху". Добавлять вспомогательные столбцы нельзя.
 
Цитата
lipun написал:
Как прописать, чтобы он применялся только к выделенному диапазону?
Вот так
Код
Sub Test()
    With Worksheets("Лист1") 'Измените названия листа на нужный
        'Set Rng = .Range("E8:E10") 'Если надо задать диапазон
        For Each n In Selection 'задайте Rng вместо Selection  если нужно выполнять в фиксированном диапазоне
            If n = "" Or n = 0 Then
            n.Value = "-"
        End If
      Next n
    End With
End Sub
Сначала выделяете нужный диапазон, потом жмете кнопку
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Цитата
lipun написал:
если бы создатели Экселя своими руками не прописали в Условном форматировании условие ячейки "Пустая"
Вы же хотите, чтобы в пустой ячейке отображался кукиш. До этого вывиха мозга разработчикам excel еще расти да расти...
 
Dyroff, Благодарю!

RAN, Попытаюсь объяснить, что патологии мозга тут нет: Есть большая разнородная таблица с кучей цифр и текста, много объединенных ячеек и ячеек с текстом. Формат таблицы - желание заказчика. Но самое неприятное, что заполняется она разными людьми вручную. Автоматизация ввода данных невозможна. Так вот, после ввода всех данных необходимо пометить все ячейки с нулевыми данными как "-", так заказчик хочет понимать, что эти значения в данном периоде на самом деле нулевые, а не просто ячейки, куда забыли ввести данные. Для этого я использую общий формат # ##0;-# ##0;"-"
В самом конце я готовлю таблицу к печати. Вижу, что есть много ячеек, где пользователи забыли поставить нули. То есть в части ячеек стоит "-", а в части - пусто. Решение 1: ползать по всей таблице и вручную вбивать нули в пустые ячейки. Решение 2: Через условное форматирование пометить все пустые ячейки как "-". Решение 3: Использовать макрос Dyroff,
 
Цитата
lipun написал:
после ввода всех данных необходимо пометить все ячейки с нулевыми данными как "-", так заказчик хочет понимать, что эти значения в данном периоде на самом деле нулевые, а не просто ячейки, куда забыли ввести данные.
Если данные забыли ввести, то каким образом там может появиться ноль?
 
Юрий М, окончание ввода данных подразумевает, что всё введено верно, но забыли кое где поставить нули. Моя задача здесь - подготовка к печати на основе того, что есть. Косяки в данных - отдельная тема.  
 
Цитата
lipun написал:
забыли кое где поставить нули
Всё равно не вижу логики: сначала вводим нули, а затем эти нули нужно заменить на дефис. Понимаю, что не ответ по теме, но почему СРАЗУ вместо ноликов не вводить дефис?
 
Могу предложить вариант замены на этапе ввода: скопируйте в модуль листа
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("B2:D10")) Is Nothing Then
        Application.EnableEvents = False
        If Target = 0 Then Target = "-"
    End If
    Application.EnableEvents = True
End Sub

 
Юрий М,
Признаю, мой косяк, не упомянул один нюанс: кое где есть формулы, в том числе по столбцам подбиваются итоги. То есть чисто ввод "-" в ячейку - не сработает.
В итоге делаю так:
-ко всей таблице применяю формат # ##0;-# ##0;"-"
-выделяю таблицу и применяю макрос замены "" на 0 (немножко подправил макрос от Dyroff)
Результат меня радует.
 
Цитата
lipun написал:
Задача: в пустых ячейках или ячейках, содержащих "0", отображать "-". Применив условное форматирование не получается использовать соответствующий текстовый формат "-". Ячейка остаётся пустой.
Вариант решения:
  1. УФ- Форматировать ячейки, которые содержат пустые значения- Заливка красная
  2. Найти и выделить - Выделение группы ячеек - Пустые ячейки
  3. Ввести "-". Нажать Ctrl и Enter
Способ простой, но работает.
 
Цитата
Nata14 написал:
Способ простой, но работает
Nata14, а это:
Цитата
lipun написал:
или ячейках, содержащих "0", отображать "-".
в четвёртом пункте? )
Страницы: 1
Наверх