Eu tenho uma lista de números no formato 000000xx ou 00000yyy. Existem alguns milhares deles. Desejo extrair xx ou yyy, mas certo exigiria que o número de caracteres fosse extraído. Existe uma maneira melhor de fazer isso?
Responder1
Se seus dados estiverem no formato:
1234432566ABC
ou
765257754322XY
Então os três últimos caracteres têm o formato:
abc
ou
2XY
Podemos determinar se devemos extrair 2 ou 3 caracteres verificando se o primeiro caractere do trio é numérico ou não:
=IF(ISERROR(--(LEFT(RIGHT(A1,3),1))),RIGHT(A1,3),RIGHT(A1,2))
OBSERVAÇÃO:
O truque principal é:
- isolando o terceiro caractereda direita
- poder testar se é umnumeral
Responder2
=REPLACE(A1,1,SUM(--ISNUMBER(-LEFT(A1,ROW($A$1:INDEX($A:$A,LEN(A1)))))),"")
-ISNUMBER(…
retorna um1
para cada caractere numérico na string.SUM(…
em seguida, adiciona-os para retornar uma contagem dos dígitos no início da string.- Em seguida, colocamos
REPLACE
osSUM
caracteres iniciais com uma string nula.
Responder3
Isso deve puxar oxxouaaafora da extremidade direita, desde que a coisa toda tenha 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), "")
A eficiência do cálculo pode ser melhorada se você alterar os dois99é para qualquer que seja o número máximo de dígitos a serem removidos.
Responder4
A1
: 1234432566ABC
A2
: 765257754322XY
B1
, copiado:
=RIGHT(A1,ISERR(-LEFT(RIGHT(A1,3)))+2)
então,
B1
retornar :ABC
B2
retornar :XY