Como saber se uma célula do Excel tem uma fórmula ou está codificada?


17

Alguém tem uma dica especial (preferencialmente não VBA) para informar sistematicamente se uma célula tem um valor codificado ou se é uma fórmula derivada?

Estou lidando com alguns dados que contêm subtotais confusos e tentando descobrir se consigo separar as linhas brutas.


O modo "Mostrar fórmulas" (Ctrl + `) ajuda?
sblair

É verdade, mas eu não consideraria isso "sistemático" - requer que eu exploda manualmente as linhas subtotais.
YGA

Respostas:


8

Use formatação condicional. Escolha a opção "Use uma fórmula para determinar quais células formatar" e digite "= NÃO (Cellhasformula)". Isso formatará qualquer coisa codificada.


8
Portanto, essa não foi a resposta completa, mas na verdade é bastante elegante. A resposta completa está em: j-walk.com/ss/excel/usertips/tip045.htm A chave é que você primeiro precisa criar um nome (via Formulas -> Name Manager) chamado "Cellhasformula" que "se refira a" o fórmula mística = GET.CELL (48, INDIRETO ("rc", FALSO)). Como o link diz, a fórmula usa GET.CELL, que está na linguagem de macro XLM (antecessora do VBA) e não pode ser usada diretamente em uma planilha. O argumento "48" faz com que GET.CELL retorne 'True' se a célula tiver uma fórmula. O INDIRECT basicamente cria uma ref para cada célula no intervalo selecionado.
YGA

Editei a resposta para incluir esses detalhes. Obrigado @YGA
Alain

15

Selecione as células em questão, pressione Ctrl+ Ge selecione Specialpara obter a seguinte caixa de diálogo:

Caixa de diálogo Ir para especial

Em seguida, especifique o tipo de célula que você deseja e clique OKe apenas esses tipos de células permanecerão selecionados.


8

No Excel 2013, você pode:

=ISFORMULA(reference)

Aqui a documentação completa


3
=iferror(Formulatext(cell),"Not Formula")

ou para mostrar apenas as fórmulas:

=iferror(Formulatext(cell),"")

Para quem usa o LibreOffice Calc em vez do Excel, substitua formatex () pela fórmula ().
fixer1234

2

Dois outros métodos são

  1. Use uma ferramenta de mapeamento como o meu Mappit! addin (que pode ser executado como um complemento confiável)
  2. Você pode usar a solução alternativa XLM / Range Names muito útil que oferece uma coloração em tempo real de células codificadas, fórmulas, células vinculadas etc. Isso não requer nenhum conhecimento de programação para implantar ao contrário do VBA


1

Se você deseja armazenar o arquivo do Excel em um formato de pasta de trabalho livre de macro, evite o VBA e as macros (por exemplo, as abordagens XL4 / XLM sugeridas em outras respostas). Nesta resposta, assumi um arquivo do Excel sem macro.

Se você usa o MS-Excel 2013, pode usar:

=ISFORMULA(reference)

Se você usa versões mais antigas do MS-Excel (por exemplo, 2010, 2007), não há função verdadeira para determinar se uma célula contém uma fórmula. No entanto, você pode aproximar usando:

=IF(OR(ISBLANK(reference);CELL("prefix";reference)<>"");FALSE;IF(CELL("type";reference)="l";TRUE;"MAYBE"))

A função acima retorna:

  • TRUE para células que contêm uma fórmula que resulta em dados String.
  • FALSE para células que contêm um literal String ou está em branco.
  • "TALVEZ" para células que contêm um valor booleano, um número ou uma data, independentemente de esse valor ser literal ou o resultado de uma fórmula.

1

Passado a data original, mas se for útil a alguém, consegui contornar isso selecionando o intervalo de células e, em seguida, usando Substituir (Ctrl + H), definindo-o como 'Look in' "Formulas" e substituindo um igual =com um apóstrofo-igual'=

Isso trouxe todas as fórmulas, mas obviamente também converteria coisas como se $ C $ 1 contido =if($A1=$B1,"Match","Different")em'=if($A1'=$B1,"Match","Different")

Observe o A1'=B1meio da fórmula que pode ser problemático, mas ainda significa que você pode ver as fórmulas, embora de forma não pragmática. Poderia usar a função SUBSTITUTE para alterá-la novamente, para que $ D $ 1 contenha =SUBSTITUTE(C1,"'=","="), basta copiar para o Bloco de Notas e colar novamente em $ E $ 1

A outra maneira seria 'mostrar fórmulas', mas isso mostraria fórmulas para cada célula, não apenas para um intervalo selecionado.


1
Function is_formula(c As Range) As Boolean
  is_formula = Left(c.Formula, 1) = "="
End Function

Você pode adicionar uma breve explicação para nos contar o que está acontecendo aqui? :)
bertieb

Basta colocá-lo em um módulo VBA, embora eu perceba agora que o OP não queria o VBA. Mas enfim, é por isso que eu uso.
George Skelton

Isso não é realmente uma explicação
bertieb
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.