Условное форматирование для скрытия содержимого ячейки даже при печати

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

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

Серый на сером все еще отображается

Я использую Excel 2008 на Mac.


person Jeff Erickson    schedule 09.03.2011    source источник
comment
Джефф, по какой причине вы не приняли ни один из предложенных ответов? Я лично считаю, что @ mpalanco - самый надежный и довольно простой.   -  person r2evans    schedule 15.09.2018


Ответы (5)


Другой способ обойти это - взломать, но он должен работать:

  • есть два листа, данные и просмотр
  • основывайте свое условное форматирование на листе просмотра значений в листе данных (не уверен, что это вариант ...)
  • используйте операторы if в каждой ячейке, которые говорят что-то вроде if(dataCell=matchCell, "", dataCell)
person acushner    schedule 11.03.2014

Подозреваю, что проблема печати связана не столько с Excel, сколько с особенностью принтера. Производители принтеров, очевидно, хотят получить «лучший» результат на распечатанной странице. Некоторые оптимизируют цвет, делая меньшие объемы печати (например, диаграммы и линии) немного темнее, а большие области (например, фон ячеек немного светлее). Это так, что, когда они расположены рядом, они выглядят одного цвета. Однако при печати друг на друга в соответствии с вашим случаем вы получаете остаточный эффект.

Это связано с хорошо известным эффектом, согласно которому для любого данного цвета большая область этого цвета будет выглядеть темнее, чем небольшая область того же цвета. Есть и другие эффекты, которые создают эту иллюзию - например, фон и близлежащие цвета. Для примера - это не совсем то же самое, что у вас - но иллюстрирует иллюзию, поищите в Интернете «шахматную доску Адельсона» и прочтите объяснения.

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

person GMc    schedule 04.02.2019

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

person Amit    schedule 09.03.2011
comment
Спасибо, Амит, но фон серый. При переключении текста на серый цвет текст исчезает на экране, но при печати остается немного тени, которая выглядит странно. - person Jeff Erickson; 09.03.2011
comment
Надеюсь, вы уже проверили другие атрибуты шрифта (например, тиснение и т. Д.) И удалили текст. А как насчет написания макроса и вызова изменения значения ячейки. - person Amit; 09.03.2011
comment
Где я могу изменить настройки тиснения (и других)? Я не вижу его в диалоговом окне «Формат». Кроме того, эта версия Excel не поддерживает макросы. Пора Microsoft начать поддерживать все функции в обеих версиях. :) - person Jeff Erickson; 09.03.2011
comment
К вашему сведению: только цвет шрифта и тиснение не работают. Я использую белый шрифт на белом фоне, и когда я составляю отчет, он становится серым. Это должно быть правильным ответом, но, к сожалению, его недостаточно. - person r2evans; 15.09.2018

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

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

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range.Address Then
    For Each VariantValue in OtherRange
        If Range.Value = VariantValue Then
           Range.NumberFormat = ";;;"
        End If
    Next
End if
End Sub

http://www.extendoffice.com/documents/excel/919-excel-hide-cell-contents.html

http://www.ozgrid.com/VBA/run-macros-change.htm

person cronos2546    schedule 16.08.2014

person    schedule
comment
Я не могу поверить, что ;;; правильно. Это отличный ответ, но его бесит то, что Microsoft сделала такой хитрый обходной путь. - person Dan Atkinson; 16.11.2017
comment
@DanAtkinson Да, это довольно удивительно. Причина в том, что настраиваемый числовые форматы состоят из 4 разделов, разделенных 3 точками с запятой, поэтому, если мы просто введем 3 точки с запятой и ничего больше, ячейка будет пустой. - person mpalanco; 16.11.2017
comment
Спасибо за информацию и ссылку! - person Dan Atkinson; 16.11.2017