Enchimento automático de cores de acordo com os valores na célula na planilha

4

Pergunta: É possível preencher cada célula de uma planilha com uma cor cujo valor de escala de cinza seja igual ao valor da célula?

Explicação:

Considere que eu tenho uma planilha como segue:

enter image description here

Todos os valores estão entre 0 e 255 (o que corresponde a 256 cores em escala de cinza). Agora eu quero preencher cada célula com a cor cujo valor é o valor na célula. Assim, a saída esperada é a seguinte:

enter image description here

Além disso, veja que a cor da fonte em cada célula é preto ou branco correspondente à cor do plano de fundo.

Existe algum método simples no Excel para executar isso em poucas etapas ou de uma só vez?

user172056
fonte
ok, é possível fazer isso com formatos condicionais, mas se houver a possibilidade, você deve usar uma macro para isso.
Jook

Respostas:

5

Crie uma macro que percorra suas células, leia o valor na célula e atribua-a à cor da seguinte forma:

Range("A1:A6").Interior.Color = RGB(200,160,35)
TheUser1024
fonte
3

TheUser1024 está certo e tem o meu voto.

Aqui está uma solução pronta para uso:

Public Sub Demo()
  Dim cel As Range
  Dim myRange As Range

  Set myRange = Range("A1:E10")

  For Each cel In myRange
    cel.Interior.Color = RGB(cel.Value, cel.Value, cel.Value)
    If cel.Value > 127 Then
      cel.Font.Color = RGB(0, 0, 0)
    Else
      cel.Font.Color = RGB(255, 255, 255)
    End If
  Next cel
End Sub

Editar:

Este código não vai quebrar no caso de seqüências de caracteres ou valores negativos ...

Public Sub Demo()
  Dim cel As Range
  Dim greytone As Long
  Dim myRange As Range

  Set myRange = Range("A1:E10")

  For Each cel In myRange
    greytone = CLng(Abs(Val(cel.Value)))
    cel.Interior.Color = RGB(greytone, greytone, greytone)
    If greytone > 127 Then
      cel.Font.Color = RGB(0, 0, 0)
    Else
      cel.Font.Color = RGB(255, 255, 255)
    End If
  Next cel
End Sub
Jook
fonte
Isso funciona se todas as células contiverem inteiros de 1 a 256, mas isso causará um erro para qualquer outra coisa. Você pode adicionar uma condição no loop for para verificar isso, e isso deve remover qualquer problema de erro.
Excellll
@Excellll sim, você está certo - mas funciona para células vazias e todos os valores duplos positivos. No entanto, eu editei para uma versão mais robusta, obrigado pela dica!
Jook
Acredito que isso mereça mais votos do que minha resposta, já que faz todos os detalhes. O meu apenas declara o princípio básico e eu nem sequer pensei naquele aspecto de font.color.
TheUser1024