0 | A | B | C |
---|---|---|---|
1 | primeiro número | último número | |
2 | Principais 1-5 | 1 | 5 |
3 | Principais 5-10 | 5 | 10 |
4 | Principais 11-15 | 11 | 15 |
Quero Column B
extrair o primeiro número que ocorre nas strings em Column A
.
Quero Column C
extrair o último número que ocorre nas strings em Column A
.
Tentei aplicar soluções para esta questão , mas elas não funcionaram no meu caso.
Qual fórmula eu preciso para obter os resultados esperados Column B
e Column C
?
Apenas uma solução alternativa não é mais curta como a muito bem respondida por Pb Sir
Além disso, não estou muito familiarizado com o assunto
REGEX
, mas seguindo as soluções do JvdV Sir sobre o mesmo tópico, acho que isso pode funcionar, e pode-se usar o seguinte, se durante a escrita o Office Insiders estiver habilitado:Ou, se você quiser fazer isso de uma só vez para todo o intervalo:
Isso funciona porque forçamos o Excel a retornar duas colunas devido à adição de uma string vazia à primeira E uma âncora de linha final à segunda coluna. Dessa forma, retornamos a primeira ocorrência de 1+ dígitos na 1ª coluna e os 1+ dígitos que ficam no final de uma string na 2ª coluna.
Sinta-se à vontade para fazer edições em minha resposta,
REGEX
se alguém achar que não está correta, eu fiz issoCommunity Wiki
Isso divide o texto em caracteres maiúsculos ou minúsculos e o sinal de menos (e alguns caracteres extras não utilizados entre a sequência de caracteres maiúsculos e minúsculos).
Na verdade, isso é feito por texto ou sinal de menos:
Para Excel mais antigo, recomendo o uso de auxiliares ou intervalos nomeados: Helper1 em B2:
=MAX(IFERROR(FIND(CHAR(ROW($65:$90)),UPPER(A2)),0))+1
Ajudante2 em C2:
=FIND("-",A2)
Primeiro número:
=--MID(A2,B2,C2-B2)
Segundo número:
=--RIGHT(A2,LEN(A2)-C2)
Para versões anteriores do Excel:
O exemplo acima retorna as sequências de dígitos como texto. Se você preferir que sejam números reais, prefixe cada fórmula com o unário duplo (
--
) para converter.Esta fórmula aceita qualquer comprimento de números.
B20:
=LET(perchar,MID(TEXTBEFORE(A20,"-"),SEQUENCE(1,LEN(TEXTBEFORE(A20,"-"))),1), TEXTJOIN("",TRUE,IF(ISNUMBER(--perchar),perchar,"")))
C20:
=TEXTAFTER(A20,"-")
Obrigado por postar essas perguntas para praticar :)
Tentando com este método (Microsoft 365): substitua todos os não dígitos por espaços (
IF(ISNUMBER(0 + c_), c_, space)
e divida.Típico, não resisti ao desafio:
Não testei além dos exemplos que você deu, mas a classificação de 3 dígitos é deixada para você.