Як можна зробити шрифт клітинки прозорим?


18

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

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

РЕДАКТУВАННЯ. Щоб допомогти уточнити, теплову карту забарвлюють за допомогою умовного формулювання> кольорової шкали> червоно-біло-синього (де білий колір був змінений на світло-сірий), тому значення заповнення комірок не встановлюється безпосередньо, скоріше це розраховане значення на кольоровий градієнт.

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

Відповіді:


29

Я знайшов обхід, який не змінює колір шрифту, але ефективно видаляє текст з комірок. Відрегулюйте формат номера комірки на Custom, зі значенням ;;;.



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з головної стрічки. Просто виберіть за допомогою миші діапазон, який ви бажаєте змінити, і виберіть макрос, який потрібно запустити.


Дуже цікавий підхід. Я спробував це, і він працює у заповненій формою осередку, заповненій форматом (тобто там, де безпосередньо вибрано формат комірки). На жаль, він не працює там, де колір комірки є умовним форматом на градієнті - тоді він просто змінюється на білий. Будь-які думки?
дав

Це дуже погано. Відповіді в цій публікації 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) .Font.Color = .Cells (RowTo, ColHcpDiP) .Interior.Color 'Встановити колір невидимим

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.