Extraer números de una cadena en Excel

0

Tengo una columna en Excel que se ve así:

Census Tract 2941.10 (part), Carson city, Compton CCD, Los Angeles County, California
Census Tract 5410.02, Carson city, Compton CCD, Los Angeles County, California
Census Tract 5431 (part), Carson city, Compton CCD, Los Angeles County, California
Census Tract 5432.02 (part), Carson city, Compton CCD, Los Angeles County, California
Census Tract 5433.04, Carson city, Compton CCD, Los Angeles County, California

Necesito extraer 2941.10, 5410.02, 5431, etc. Probé la siguiente fórmula: =MID(E4,MATCH(TRUE,ISNUMBER(1*MID(E4,ROW($3:$606),1)),0),COUNT(1*MID(E4,ROW($3:$606),1)))

Sin embargo, el decimal en el medio del número hace que los dos últimos números se corten. No todos los números tienen un decimal, y la cantidad de texto después del número varía según la fila (por lo que las fórmulas izquierda y derecha no son opciones). Debo usar una fórmula de Excel y no VBA / macros.

¿Alguna sugerencia?

L. Batty
fuente
Use "Texto a columnas"
Hannu

Respuestas:

2

utilizar esta:

=--TRIM(SUBSTITUTE(MID(SUBSTITUTE(A1," ",REPT(" ",999)),2*999,999),",",""))

ingrese la descripción de la imagen aquí


La fórmula anterior supone que los números son siempre la tercera "palabra" en el texto. Si ese no es el caso Y solo hay un grupo de números por cadena, puede usar esta fórmula de matriz:

=SUM(IFERROR(--TRIM(SUBSTITUTE(MID(SUBSTITUTE(A1," ",REPT(" ",999)),(ROW(INDIRECT("1:" & LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))-1)*999+1,999),",","")),0))

Al ser una fórmula de matriz, debe confirmarse con Ctrl-Shift-Enter, en lugar de Enter al salir del modo de edición. Si se hace correctamente, Excel colocará {}alrededor de la fórmula.

Se itera a través de las palabras y devuelve la suma de todos los grupos de números, y dado que solo hay un grupo de números, devuelve solo eso.

ingrese la descripción de la imagen aquí

Scott Craner
fuente
0

EDITAR: borré mi primera respuesta porque me doy cuenta de que probablemente desee devolver una cadena de dígitos, incluidos los ceros iniciales o finales, y al menos es concebible que la cadena de dígitos tenga más de 15 dígitos.

Por lo tanto, las fórmulas a continuación devuelven el número como una cadena de texto, conservando los ceros iniciales y finales. por ejemplo, 2941.10se devuelve como tal, y no como2941.1

Aquí hay una solución de fórmula

Primero defina seqcomo una fórmula con nombre:

seq Refers To:  =ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))

seqdevolverá una matriz de números {1...255} A diferencia del ROW(INDIRECT(...método de devolución de matrices, esta fórmula no es volátil.

Luego puede usar esta fórmula de matriz ingresada presionando ctrl+shiftmientras presionaenter

=MID(A1,MATCH(TRUE,ISNUMBER(-MID(A1,seq,1)),0),LOOKUP(2,1/ISNUMBER(-MID(A1,seq,1)),seq)-MATCH(TRUE,ISNUMBER(-MID(A1,seq,1)),0)+1)

o, puede usar esta fórmula un poco más larga pero normalmente ingresada:

=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),LOOKUP(2,1/ISNUMBER(-MID(A1,seq,1)),seq)-MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))+1)

Si es el caso, como en su ejemplo, que la secuencia de dígitos siempre comienza en la posición 14, entonces puede usar esta fórmula simplificada, normalmente ingresada:

=MID(A1,14,LOOKUP(2,1/ISNUMBER(-MID(A1,seq,1)),seq)-13)

ingrese la descripción de la imagen aquí

Ron Rosenfeld
fuente