Compruebe si el texto de la celda de Excel es numérico utilizando solo la fórmula

13

Tengo que averiguar si el texto de mis celdas es un valor numérico y quería usar un método elegante que no sea VBA que no impida su estado o valor actual.

Lo que he encontrado es que la ISNUMBER()función solo funciona si las celdas tienen formato de número o no tienen espacios si el formato de texto, por ejemplo:

número como ejemplos de texto

Para los tres primeros que he usado =ISNUMBER(...)y mi último intento es =ISNUMBER(TRIM(...)).

El único método que he usado que no usa VBA es anular mis valores actuales usando texto en columnas y luego usar la =ISNUMBER()función.

Nota: Soy competente con VBA y Excel y entiendo que podría crear una función definida por el usuario. Pero no quiero, ya que esto impone una macro requiere un libro de trabajo o un complemento para instalar, lo que puedo y he hecho en algunos casos.

Apreciaré cualquier consejo, pensamiento (incluso si me dicen que no se puede hacer) o soluciones VBA (sin embargo, no se marcarán como respuesta).

glh
fuente
44
FWIW es una alternativa a ISNUMBERlos raramente utilizados N. Algo así=NOT(ISERR(N(--A1)))
brettdj
1
@brettdj gracias por eso! Para una respuesta que usa la menor cantidad de caracteres y es rápida y sucia, ahora la tengo =N(-A1). Tampoco sabía que existía.
glh
¿Cuál es el propósito de los guiones delante de la referencia de celda? ¿Y por qué cada uno tiene un número diferente de guiones?
youcantryreachingme

Respuestas:

30

Intente multiplicar el valor de la celda por 1 y luego ejecute las funciones IsNumbery Trim, por ejemplo:

=IsNumber(Trim(A1)*1)

David Zemens
fuente
2
+1 para velocidad y un buen respuesta. ¡Es una mierda cuando las cosas están bien en tu cara pero no puedes verlas!
glh
1
También descubrí que ni siquiera necesitas usarlo trim. Mis saludos.
glh
2
@glh a veces solo se necesita otro par de ojos para ver lo que está frente a ti. :)
David Zemens
5

Suponiendo que el valor que desea convertir está en A1, puede usar la siguiente fórmula:

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

Aquí las funciones clean y trim están eliminando espacios en blanco y ninguno de los caracteres imprimibles. El valor de la función convierte una cadena en un número, y con la cadena convertida podemos verificar si el valor es un número.

Sam Plus Plus
fuente
3
+1. Como rápido y sucio me gusta, =VALUE(A1)ya que mis datos no serán necesarios CLEAN(). No sabía VALUE()que existía la función. Solo para notar TRIM()que no hace nada ya que los espacios se ignoran de todos modos.
glh
3

La respuesta más corta que tengo a mi pregunta es:

=N(-A1)

Gracias brettdj

glh
fuente
2

Sé que esta publicación es antigua, pero me pareció muy útil en este caso, tenía una fórmula que devolvió (333), a pesar de que es un número y ISNUMBER dirá que es un número, aunque no quería una respuesta si tenía caracteres que no sean dígitos. Lo siguiente funcionó para mí.

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

Funciona si hay CUALQUIER carácter que no sean dígitos. Si solo quieres un verdadero falso, suelta el IF

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

Como dijo David Zemens

=IsNumber(Trim(A1)*1)

Funciona pero si hay un "-" o el número está entre paréntesis, dirá que es un número.

Espero que esto te ayude a ti u otros.

La boca
fuente
0

si alguien necesita filtrar celdas que contengan algo que no sea numérico:

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

resultados decimales y negativos FALSE

robotik
fuente