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

dav
fonte

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 ;;;.

dav
fonte
Ó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.

chuff
fonte
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.

timbosides
fonte
1

É assim que eu faço.

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

user685761
fonte