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.

YGA
fonte
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.

Stephen
fonte
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.

Mike Fitzpatrick
fonte
8

No Excel 2013, você pode:

=ISFORMULA(reference)

Aqui a documentação completa

David K.
fonte
3
=iferror(Formulatext(cell),"Not Formula")

ou para mostrar apenas as fórmulas:

=iferror(Formulatext(cell),"")
Jack
fonte
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
brettdj
fonte
1

Eu sei que você disse que não é VBA preferido, mas se você acabar sem outras soluções, o objeto Range terá uma propriedade HasFormula.

Retorna: True se todas as células no intervalo contiverem fórmulas; False se nenhuma das células no intervalo contiver uma fórmula; null caso contrário.

Fonte: http://msdn.microsoft.com/en-us/library/bb208626%28v=office.12%29.aspx

Patrick Seymour
fonte
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.
Julien Kronegg
fonte
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.

Aubs
fonte
1
Function is_formula(c As Range) As Boolean
  is_formula = Left(c.Formula, 1) = "="
End Function
George Skelton
fonte
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