Como posso tornar a fonte de uma célula transparente?


18

Estou criando um mapa de calor usando a formatação condicional do Excel. Não quero que os valores da célula sejam mostrados no plano de fundo colorido. Existe uma maneira de tornar a formatação da fonte transparente, semelhante ao encontrado na formatação de preenchimento da célula?

Como é um mapa de calor, não posso usar uma única cor (por exemplo, branco) e prefiro não precisar formatar individualmente a propriedade da fonte de cada célula para a cor apropriada.

EDIT: Para ajudar a esclarecer, o mapa de calor é colorido usando Formatação condicional> Escala de cores> Vermelho-Branco-Azul (onde o branco foi modificado para um cinza claro), para que o valor de preenchimento da célula não seja definido diretamente, é um valor calculado em um gradiente de cor.

Mapa de calor

Respostas:


29

Encontrei uma solução alternativa que não altera a cor da fonte, mas remove efetivamente o texto das células. Ajuste o formato do número da célula para Personalizado, com um valor de ;;;.


Ótimo, isso funciona como qualquer coisa
— Dev_Man

3

Embora eu não conheça nenhuma funcionalidade da planilha para combinar a cor da fonte de uma célula com a cor de preenchimento (que não seja manualmente), é muito fácil fazer isso com uma macro. A primeira macro abaixo altera as cores da fonte nas células de um intervalo selecionado para corresponder às cores de preenchimento. O segundo retorna as cores da fonte ao preto padrão.

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

Para instalar as macros, selecione Developer/ Visual Basicna faixa de opções principal e escolha Insert/ Moduleno menu. Cole o código no painel de edição que é aberto. As macros aparecerão na lista de macros acessível, escolhendo Developer/ Macrosna faixa de opções principal. Basta selecionar com o mouse o intervalo que você deseja modificar e escolher a macro que deseja executar.


Abordagem muito interessante. Eu tentei e funciona em uma célula preenchida com formato normal (ou seja, onde o formato da célula é selecionado diretamente). Infelizmente, ele não funciona onde a cor da célula é um formato condicional em um gradiente; depois, muda para branco. Alguma ideia?
— dav

Isso é ruim. As respostas nesta postagem do StackOverflow sugerem uma abordagem. Irá verificar mais tarde hoje.
— chuff

Obrigado, por enquanto estou usando meu truque de formato numérico, mas vou trabalhar no VBA mencionado no seu link para obter uma solução melhor a longo prazo.
— dav

Desculpe por alterar a resposta aceita, mas com a disparidade de votos parecia apropriado. Além disso, ele corresponde ao método que uso regularmente agora.
— dav

1

Ok, então esta é a primeira vez que enviei código, então aqui vai. Eu pensei que a rota da macro seria o caminho a percorrer, mas como você não pode definir a fonte para ser a mesma que a cor da célula usando formatação condicional, a única outra maneira seria alterar ambas com uma macro que funcione de maneira semelhante à efeito do formato condicional, veja abaixo:

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

Espero que isso ajude alguém, mesmo que seja três anos tarde demais para a pergunta original.


1

É assim que eu faço.

.Cells (RowTo, ColHcpDiP) .Font.Color = .Cells (RowTo, ColHcpDiP) .Interior.Color 'Definir cor invisível

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.