Excel: Extrair substring que contém N número de traços

0

Isso só me deixa perplexo. Cada célula nesta lista contém uma subcadeia que é delimitada por exatamente 4 traços. O que eu quero fazer é poder extrair essa string em sua própria coluna. A cadeia não está necessariamente na mesma posição de célula para célula.

#99760395  AP965-690-0-WE-00
#88908-789302  92WQ-50Y-0-N-900BD
6676549  9W7B-20W-0-N-00  SERVO
RZ2268461 TAO120-50-0-X-000 W/ AMPLIFIER
REF# BW309-8WV9-0-V-00

Abaixo está o resultado final que desejo alcançar:

AP965-690-0-WE-00
92WQ-50Y-0-N-900BD
9W7B-20W-0-N-00
TAO120-50-0-X-000
BW309-8WV9-0-V-00

Eu brinquei com uma combinação de funções LEN, FIND, ESQUERDA, DIREITA, mas não consigo alcançar o resultado pretendido.

user679340
fonte
O grupo sempre parece aparecer após o primeiro grupo de espaços. Encontre o primeiro caractere após o primeiro grupo de espaços. A string termina o caractere antes do próximo espaço. Se você precisar verificar, conte hífens nessa sequência e teste para count = 4. Se a sequência de destino não for necessariamente o segundo segmento delimitado por espaço, analise segmentos, teste 4 hífens, se não for verdadeiro, passe para o próximo segmento.
fixer1234

Respostas:

2

Aqui parece que seus dados sempre aparecem após o primeiro grupo de espaços, então acho que essa função funcionará para você. A chave aqui é o uso da função Mid.

Captura de tela

=TRIM(IFERROR(MID(TRIM(A2);FIND(" ";TRIM(A2));FIND(CHAR(1);SUBSTITUTE(TRIM(A2);" ";CHAR(1);2))-FIND(" ";TRIM(A2)));RIGHT(TRIM(A2);LEN(TRIM(A2))-FIND(CHAR(1);SUBSTITUTE(TRIM(A2);" ";CHAR(1);1)))))

Parece bastante confuso, então aqui está uma pequena avaria.
Parte 1:

=RIGHT(TRIM(A2);LEN(TRIM(A2))-FIND(CHAR(1);SUBSTITUTE(TRIM(A2);CHAR(32);CHAR(1);1)))

Isso encontrará a primeira ocorrência do "" (também poderíamos usar Char (32), mas provavelmente é mais fácil seguir esse caminho.) Por causa do TRIM, o primeiro grupo de espaços sempre terá o comprimento de 1 (um espaço). É por isso que podemos usar a primeira e a segunda ocorrências.

Parte 2:

=MID(TRIM(A2);FIND(" ";TRIM(A2));FIND(CHAR(1);SUBSTITUTE(TRIM(A2);" ";CHAR(1);2))-FIND(" ";TRIM(A2)))

Aqui encontramos a string que começa da 1ª ocorrência à 2ª ocorrência.
Se não houver espaço para encontrar como a segunda ocorrência, isso produzirá um erro. É por isso que combinamos com a Parte1.

= Trim (IFERROR (PART2; PART1))

Mike

Mikael Kajander
fonte