Pergunta :É possível preencher cada célula de uma planilha com uma cor cujo valor da escala de cinza seja igual ao valor da célula?
Explicação:
Considere que tenho uma planilha da seguinte forma:
Todos os valores estão entre 0-255 (que corresponde a 256 cores em tons de cinza). Agora quero preencher cada célula com a cor cujo valor é o valor da célula. Portanto, a saída esperada é a seguinte:
Além disso, veja se a cor da fonte em cada célula é preta ou branca, correspondendo à cor de fundo.
Existe algum método simples no Excel para fazer isso em poucas etapas ou de uma só vez?
Responder1
Crie uma macro que itere pelas células, leia o valor na célula e atribua-o à cor assim:
Range("A1:A6").Interior.Color = RGB(200,160,35)
Responder2
TheUser1024 está certo e tem meu voto.
Aqui está uma solução pronta para usar:
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 será quebrado em caso de strings 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