Tengo una lista de números que tienen la forma 000000xx o 00000yyy. Hay unos cuantos miles de estos. Deseo extraer xx o yyy, pero lo correcto requeriría extraer la cantidad de caracteres. ¿Hay una mejor manera de hacer esto?
Respuesta1
Si tus datos son del formulario:
1234432566ABC
o
765257754322XY
Entonces los últimos tres caracteres tienen la forma:
A B C
o
2XY
Podemos determinar si debemos extraer 2 o 3 caracteres viendo si el primer carácter del trío es numérico o no:
=IF(ISERROR(--(LEFT(RIGHT(A1,3),1))),RIGHT(A1,3),RIGHT(A1,2))
NOTA:
El truco clave es:
- aislando el tercer personajedesde la derecha
- poder probar si es unnúmero
Respuesta2
=REPLACE(A1,1,SUM(--ISNUMBER(-LEFT(A1,ROW($A$1:INDEX($A:$A,LEN(A1)))))),"")
-ISNUMBER(…
devuelve un1
para cada carácter numérico de la cadena.SUM(…
luego los agrega para devolver un recuento de los dígitos al comienzo de la cadena.- Luego colocamos
REPLACE
losSUM
personajes principales con una cadena nula.
Respuesta3
Esto debería tirar delxxoyyyen el extremo derecho, siempre y cuando todo tenga menos de 99 caracteres.
=RIGHT(A2, LEN(A2)-AGGREGATE(14, 7, ROW($1:$99)/ISNUMBER(--MID(A2, ROW($1:$99), 1)), 1))
'alternate
=REPLACE(A2, 1, AGGREGATE(14, 7, ROW($1:$99)/ISNUMBER(--MID(A2, ROW($1:$99), 1)), 1), "")
La eficiencia del cálculo podría mejorarse si cambia los dos99's a cualquiera que sea el número máximo de dígitos a eliminar.
Respuesta4
A1
: 1234432566ABC
A2
: 765257754322XY
B1
, copiado:
=RIGHT(A1,ISERR(-LEFT(RIGHT(A1,3)))+2)
entonces,
B1
devolver :ABC
B2
devolver :XY