Verifique se o texto da célula do Excel é numérico usando apenas a fórmula

12

Eu tenho que descobrir se o texto das minhas células é um valor numérico e queria usar um método não VBA elegante que não impede seu estado ou valor atual.

O que eu descobri é que a função ISNUMBER() só funciona se as células são formatação numérica ou tem sem espaços se a formatação do texto, por exemplo:

Para os três primeiros, usei =ISNUMBER(...) e minha última tentativa é =ISNUMBER(TRIM(...)) .

O único método que usei que não usa o VBA é substituir meus valores atuais usando texto em colunas e usar a função =ISNUMBER() .

Observação: tenho proficiência com o VBA e o Excel e entendo que posso criar uma função definida pelo usuário. Mas eu não quero como isso impõe uma pasta de trabalho exigida de macro ou um suplemento a ser instalado, o que eu posso e tenho feito em alguns casos.

Eu aprecio qualquer conselho, pensamentos (mesmo que eles me digam que isso não pode ser feito) ou soluções de VBA (não serão marcados como resposta, no entanto).

    
por glh 30.04.2013 / 03:05

5 respostas

27

Tente multiplicar o valor da célula por 1 e, em seguida, execute as funções IsNumber e Trim , por exemplo:

=IsNumber(Trim(A1)*1)

    
por 30.04.2013 / 03:10
5

Supondo que o valor que você deseja converter está em A1, você pode usar a seguinte fórmula:

=ISNUMBER(VALUE(TRIM(CLEAN(A1)))

Aqui as funções limpar e aparar estão removendo espaços em branco e nenhum caractere imprimível. O valor da função converte uma string em um número e, com a string convertida, podemos verificar se o valor é um número.

    
por 30.04.2013 / 04:02
2

Eu sei que este post é antigo, mas achei isso muito útil neste caso Eu tinha uma fórmula que retornou (333), mesmo que seja um número e ISNUMBER dirá que é um número mesmo que eu não quisesse uma resposta se tivesse caracteres diferentes de dígitos. O seguinte funcionou para mim.

=IF(AND(ISNUMBER(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))),"Is Number","")

Funciona se houver QUALQUER caractere diferente de dígitos. Se você quer apenas uma verdadeira falsa queda, o IF

=AND(ISNUMBER(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))))

Como David Zemens afirmou

=IsNumber(Trim(A1)*1)

Funciona, mas se houver um "-" ou o número estiver entre parênteses, será um número.

Espero que isso ajude você ou outras pessoas.

    
por 08.04.2016 / 20:14
1

A resposta mais curta que recebi para minha pergunta é:

=N(-A1)

Obrigado brettdj

    
por 30.04.2013 / 14:03
0

se alguém precisar filtrar células que contenham algo que não seja numérico:

=AND(SUMPRODUCT(--ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))=LEN(A1),A1<>"")

decimais e negativos resultam FALSE

    
por 06.10.2017 / 09:58