Formate condicionalmente uma célula se ela contiver fórmula

17

É possível formatar condicionalmente uma célula se ela contiver uma fórmula (para alertar a mim e a outros usuários ao atualizar a célula)?

Wilson
fonte
Se você quiser ver rapidamente quais células contêm fórmulas, digite Ctrl-`(isso é uma marcação inversa, na mesma tecla que ~ nos teclados em inglês) para exibir fórmulas. Pressione a tecla novamente para alternar.
yoyo

Respostas:

8

Você pode usar a formatação condicional para fazer isso usando nomes XLM e Range

Tenho um artigo mais longo sobre o uso do XLM com nomes de intervalo e formatação condicional para formatar automaticamente planilhas de acordo com o conteúdo da célula

  1. Definir um nome de intervalo IsFormula = GET.CELL (48, INDIRECT ("rc", FALSE))
  2. Aplique um teste de células de formatação condicional para a fórmula, ou seja, = IsFormula com um preenchimento de cor
brettdj
fonte
Desculpe, não testei sua resposta até agora. Esse truque é simples e bonito. Aceitaram! Obrigado. (By the way, o link está quebrado.)
wilson
Testado e funciona! Eu tive que encontrar a definição correta para a versão em italiano do Excel 2007. Se você possui o Excel em italiano, deve usar = INFO.CELLA (48; INDIRETTO ("rc"; FALSO)) (observe o ponto e vírgula no lugar de vírgulas também)
21416 Kar.ma
A parte ruim é que você precisa salvá-lo como um arquivo macro (por exemplo, .xlsm) e, quando você abre o arquivo, a coloração não aparece até que você ative as macros.
21416 Kar.ma
Você costumava usar xlmsem avisos de macro; o MSFT mudou a abordagem de segurança.
brettdj
9

Com base na resposta de brettdj, porque achei o artigo vinculado bastante difícil de seguir:

  1. Crie uma nova regra de Formatação Condicional e selecione Usar uma fórmula para determinar quais células serão formatadas.
  2. Insira a seguinte fórmula: =ISFORMULA(INDIRECT("rc",FALSE))
  3. Se você deseja que a regra se aplique a toda a planilha, $1:$1048576como o intervalo a ser aplicado. Caso contrário, você pode inserir qualquer intervalo.

A fórmula INDIRECT("rc",FALSE)retorna a referência da célula atual. Se alguma vez eu usar isso em uma planilha, crio um Nome Definido chamado algo assim ThisCelle o uso na fórmula, para o caso de voltar anos depois e pensar "que diabos é isso?".

toryan
fonte
Esta é a resposta correta para o Excel 2013 e posterior, consulte support.office.com/en-us/article/...
anishpatel
Em vez de usar INDIRECT("rc",FALSE), use a referência relativa com a célula superior esquerda no intervalo "Aplica-se a" à formatação condicional. Por exemplo, se o seu intervalo "Aplica-se a" for =$A$3:$F$300, use =ISFORMULA(A3). Isso funciona porque a formatação condicional suporta referência relativa, consulte este
Micah Lindström
4

Você pode tentar estes:

VBA

Crie uma função personalizada com o seguinte código:

Function IsFormula(ByVal Ref As Range) As Variant
    If Ref.Cells.Count > 1 Then
        IsFormula = CVErr(xlErrNA)
    Else
        IsFormula = Ref.HasFormula
    End If
End Function

Exemplo:

Para verificar se alguma célula da coluna A possui alguma fórmula:

  1. Destaque a coluna A
  2. Vá para Formatação condicional > Nova regra > Use uma fórmula para determinar quais células serão formatadas
  3. Use o ff. Fórmula:=IsFormula(A1)

Não VBA

  1. Pressione F5ou Ctrl+G
  2. Clique em especial .
  3. Escolha Fórmulas e clique em OK . Isso destaca todas as células na planilha que contém fórmulas.
  4. Configure o formato que você deseja usar.
    Ou
    Vá para Estilos de célula (na guia Início) e escolha um estilo que deseja associar às células que contêm fórmula. Para alterar a aparência, clique com o botão direito do mouse no estilo que você selecionou e clique em Modificar . Todas as células que recebem esse estilo serão atualizadas automaticamente.
Ellesa
fonte
Embora eu pessoalmente não prefira usar o VBA, a solução VBA é melhor nesse caso, porque a formatação da célula pode ser alterada dinamicamente quando a fórmula é inserida em uma célula (ou vice-versa). obrigado.
Wilson
4

Existe uma maneira muito simples de fazer isso, testada no Excel 2016.

Destaque o seu intervalo ao qual você deseja aplicar, digamos, a partir de A3:W20. Entre em formatação condicional e selecione NEW RULE | USE A FORMULA TO DETERMINE WHICH CELLS TO FORMAT.

Coloque =isformula(A3)e escolha o formato que você deseja aplicar.

A3é obviamente uma referência à primeira célula do seu intervalo, mas essa formatação se aplica a todos. O resultado é que, dentro do seu intervalo, qualquer célula que é uma fórmula é formatada condicionalmente.

Joe Dog
fonte
0

Os sites de ajuda mais recentes recomendam uma função definida pelo usuário:

Function IsFormula(cell) as boolean 
  IsFormula = cell.HasFormula
End Function

Em seguida, use essa função como sua condição

De fato, o Excel 2013 e versões posteriores têm IsFormulacomo função padrão.

Carl Witthoft
fonte
-1

Você também pode usar a formatação condicional:

  1. Selecione o intervalo de células às quais você deseja aplicar sua formatação condicional.
  2. Em Página inicial -> Formatação condicional -> Nova regra: use uma fórmula para detectar qual célula formatar
  3. Em Formatar valores quando esta fórmula for verdadeira, coloque: =HasNoFormula
  4. Selecione o formato que você deseja

Testado usando o Excel 2010.

Deconinck Florian
fonte
Sua resposta está incompleta. Eu não acho que você testou.
Wilson
2
-1, isso não faz nada. O que = HasNoFormula deveria fazer?
toryan