Excel: use a fórmula em formato de célula

0

Existe uma maneira de usar uma fórmula como formato de célula?

AFAIK, a formatação condicional permite apenas o formato estático aplicado com base em alguma condição. Eu quero que o formato em si seja dinâmico. Por exemplo, desejo definir a cor de uma célula como seu conteúdo (se o valor da célula for "vermelho" e usar vermelho como a cor), sem definir uma regra de formatação condicional para cada cor.

Sei que isso pode ser feito com uma macro, mas não quero executar uma macro após cada alteração de célula.

    
por Assaf286294 11.09.2011 / 11:50

3 respostas

3

Eu não acredito que exista uma fórmula para isso, nem há uma opção no gerenciador de formatação condicional.

Você pode, no entanto, usar o VBA. Aqui está uma pequena função para você começar:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

'Do nothing if more than one cell is updated, or if cell contents are deleted
If Target.Cells.Count > 1 Or IsEmpty(Target) Then
    Exit Sub
End If

Select Case LCase(Target.Value)
    Case "red"
        newcolor = RGB(255, 0, 0)
    Case "blue"
        newcolor = RGB(0, 0, 255)
    Case "chartreuse"
        newcolor = RGB(0, 255, 0)
    Case "lavender"
        newcolor = RGB(224, 176, 255)
    Case Else
        newcolor = Target.Interior.Color
End Select

Target.Interior.Color = newcolor
Application.EnableEvents = True

End Sub

Para usar:

  1. Pressione Alt + F11 .
  2. No Explorador de Projetos (painel esquerdo), clique duas vezes na planilha à qual você deseja aplicar a formatação.
  3. Cole o código na janela.

A sub-rotina será executada automaticamente:

  • Quando você digita "vermelho", "azul", "chartreuse" ou "lavender" acima em qualquer célula nessa planilha específica
  • Quando uma fórmula na célula any retorna "red", "blue", "chartreuse" ou "lavender"

Você não precisa executar manualmente a função sempre que precisar colorir as células.

Você também pode limitar as células nas quais essa função irá "operar" alterando a condição no bloco IF. Por exemplo, para colorir células na coluna C apenas, você pode alterar o bloco IF acima para o ff:

If Target.Cells.Count > 1 Or Target.Column <> 3 Then
    Exit Sub
End If

É claro que você precisa salvar sua pasta de trabalho como um documento habilitado para macro.

    
por 11.09.2011 / 13:22
2

até onde eu sei, além de adicionar um formato condicional para cada cor, você não pode fazer isso sem uma macro. no lado positivo, não deve demorar muito para fazer um para cada cor que você está usando, eu diria um processo de 5 minutos.

    
por 11.09.2011 / 12:05
2

Concordo com o outro pôster, pois é provável que você tenha que usar uma macro. Você não teria que executar a macro manualmente a cada vez, pois você poderia atribuí-la a um SheetChange .

Clique na pasta Microsoft Excel Objects do seu VBA Project no VBE e, em seguida, clique duas vezes em ThisWorkbook para gerar um stub de código. Selecione Worksheet no lado esquerdo e, em seguida, selecione SheetChange no lado direito.

Acontece que o exemplo que eu vinculei usa esse evento para controlar a cor da célula (você teria que atualizar o código para usar a string "red" , "green" , "blue" em vez do caso declaração com os valores numéricos.

    
por 11.09.2011 / 12:17