Extrai valores da string padrão, em 3 colunas?

0

Eu tenho uma única coluna que contém uma string no seguinte padrão:

blablabla?bla&bla&tv_a=value1&tv_b=value2&tv_3=value3

Eu quero extrair os dados das sequências tv_[i] em 3 colunas separadas:

value1 value2 value3

Exemplo:

Para os dois registros a seguir:

long-url-here?a=0&b=4&tv_a=hello&tv_b=there&tv_3=now

other-url?z=4&v=2&tv_a=this&tv_b=is%20an2&tv_3=example

As colunas devem ser:

column 1 | column 2 | column 3
-------------------------------
hello    | there    | now
this     | is an    | example
    
por rockyraw 09.08.2016 / 00:38

2 respostas

4

Coloque isso na primeira linha e altere A1 para a primeira célula:

=MID(TRIM(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A1,"2",""),"%0"," "),"&tv_",REPT(" ",999)),999*COLUMN(A:A),999)),FIND("=",TRIM(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A1,"2",""),"%0"," "),"&tv_",REPT(" ",999)),999*COLUMN(A:A),999)))+1,999)

Em seguida, arraste mais duas colunas e diminua o comprimento necessário.

    
por 09.08.2016 / 01:22
1

Usando o seu exemplo:

long-url-here?a=0&b=4&tv_a=hello&tv_b=there&tv_3=now

Eu abordo as coisas, "por peças", ou participo o problema em partes menores, depois as reúno. Isso também é conhecido como a abordagem "dividir e conquistar". É assim que parece:

Você identificou que há três variáveis nas URLs que interessam a você, na ordem:
tv_a , tv_b , tv_3 .Mas vamos deixar ser: tv_a , tv_bee , tv_300000

Dado o URL, vamos encontrar o tv_a:
= FIND ( "tv_a", URL, 1 ) = 23 = posição - encontre a string tv_a na URL começando na posição do primeiro caractere na string.

Qual é o comprimento da variável tv_a?
= LEN ( "tv_a" ) = 4 = comprimento

Geven a URL e a posição da primeira variável e o comprimento da variável, vamos encontrar a palavra após o sinal "=":
= MID ( URL, variável + comprimento + 1, comprimento + 1 ) = olá

Você pode encadear toda a fórmula em uma única fórmula. Essa é uma tarefa trivial no Excel. A convenção de nomenclatura neste exemplo é: url = A3, primeiro = B2, segundo = C2, terceiro = D2 Isso é o que parece: AllThreeVariables:wrtImagemacimadolayout
1º=MID(url,B3+LEN(primeiro)+1,C3-B3-LEN(first)-2)=olá
2º=MID(url,C3+LEN(segundo)+1,D3-C3-LEN(segundo)-2)=lá
3º=DIREITO(url,LEN(url)-FIND(terceiro,url,D3)-LEN(terceiro))=agora

Umexemplodetarefatrivial:usandocélulasauxiliares

LetB3=FIND(first,url,1),C3=LEN(first):preferred1st=MID(url,B3+LEN(first)+1,C3-B3-LEN(first)-2)=hello
Bysubstitution,youcanuseasinglelineinsteadofhelper-cells:1st=MID(url,FIND(first,url,1)+LEN(first)+1,FIND(second,url,1)-FIND(first,url,1)-LEN(first)-2)=hello

Vocêdescobriráque,aoresolverproblemascomoesses,émelhorusarmétodosderesoluçãodepeçaspararetornaraosprojetosparausoposterioremoutrasáreassemelhantes;Destaforma,vocêpodeverasoluçãodoproblemamaisfácilporqueéumavançoparafrente.

*Convençãodenomenclatura: link

    
por 09.08.2016 / 05:34