Как сделать шрифт ячейки прозрачным?


18

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

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

РЕДАКТИРОВАТЬ: Чтобы уточнить, карта тепла окрашивается с использованием условного форматирования> Цветовая шкала> Красный-Белый-Синий (где белый цвет был изменен на светло-серый), поэтому значение заливки ячейки не устанавливается напрямую, скорее это расчетное значение. на цветном градиенте.

Тепловая карта

Ответы:


29

Я нашел обходной путь, который не меняет цвет шрифта, но эффективно удаляет текст из ячеек. Настройте формат номера ячейки на Пользовательский со значением ;;;.


Отлично, это работает как угодно
Dev_Man

3

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

Sub HideFont()
    Dim cell As Variant
    For Each cell In Selection
        cell.Font.Color = cell.Interior.Color
    Next cell
End Sub

Sub UnhideFont()
    Dim cell As Variant
    For Each cell In Selection
        cell.Font.Color = 0
    Next cell
End Sub

Чтобы установить макросы, выберите Developer/ Visual Basicна главной ленте, а затем выберите Insert/ Moduleв меню. Вставьте код в открывшуюся панель редактирования. Макросы появятся в списке макросов, доступном при выборе Developer/ Macrosна главной ленте. Просто выберите мышью диапазон, который вы хотите изменить, и выберите макрос, который вы хотите запустить.


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

Это очень плохо. Ответы в этом сообщении StackOverflow предлагают подход. Проверим позже сегодня.
Чафф

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

Извините, что изменил принятый ответ, но с несоответствием голосов это показалось уместным Кроме того, это соответствует методу, который я регулярно использую сейчас.
Дав

1

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

Sub change()

    Dim Rstart, Rmid, Rend, Gstart, Gmid, Gend, Bstart, Bmid, Bend, Rsd, Rdd,_
    Gsd, Gdd, Bsd, Bdd, Rcell, Gcell, Bcell As Integer
    Dim maxsel, minsel, halfsel, halfval, v As Double



    Rstart = 0
    Rmid = 230
    Rend = 255
    Gstart = 0 
    Gmid = 230
    Gend = 0
    Bstart = 255
    Bmid = 230
    Bend = 0

    Rsd = Rmid - Rstart
    Rdd = Rend - Rmid

    Gsd = Gmid - Gstart
    Gdd = Gend - Gmid

    Bsd = Bmid - Bstart
    Bdd = Bend - Bmid

    maxsel = Application.WorksheetFunction.Max(Selection)
    minsel = Application.WorksheetFunction.Min(Selection)
    halfsel = (maxsel - minsel) / 2
    halfval = minsel + halfsel
    If halfval = 0 Then Exit Sub

    Dim cell As Variant
    For Each cell In Selection
        v = cell.Value
        If v >= minsel And v < halfsel Then
            Rcell = Round((Rstart + ((halfval - v) / halfsel) * Rsd), 0)
            Gcell = Round((Gstart + ((halfval - v) / halfsel) * Gsd), 0)
            Bcell = Round((Bstart + ((halfval - v) / halfsel) * Bsd), 0)
        Else
            Rcell = Round((Rmid + ((v - halfval) / halfsel) * Rdd), 0)
            Gcell = Round((Gmid + ((v - halfval) / halfsel) * Gdd), 0)
            Bcell = Round((Bmid + ((v - halfval) / halfsel) * Bdd), 0)
        End If

    cell.Font.Color = RGB(Rcell, Gcell, Bcell)
    cell.Interior.Color = RGB(Rcell, Gcell, Bcell)

    Next cell

    End Sub

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


1

Вот как я это делаю.

.Cells (RowTo, ColHcpDiP) .ont.Color = .Cells (RowTo, ColHcpDiP) .Interior.Color 'Установить цвет невидимым

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.