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).


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)


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.


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


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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.