Como tirar o resto da informação de uma célula e manter apenas uma porção?

0

se possível, gostaria de remover tudo e obter o ID do pedido. O problema é: a localização da ID do pedido e, às vezes, começa com A ou 1 .

  • Exemplo de célula A1: {"Ref":"bad order","OrderId":"ABSER27"}
  • Exemplo de célula A2: {"OrderId":"ABSER27"}
  • Exemplo de célula A3: {"order_id":"12345678","customer_email":"[email protected]"}

  • Resultado desejado: B1 = ABSER27
  • Resultado desejado: B3 = ABSER27
  • Resultado desejado: B3 = 12345678
por Pardeep 31.08.2017 / 01:44

4 respostas

1

A vida pode ser mais fácil com a função "Text to column" do Excel.

Etapa 1: corte as strings em colunas

Primeiro, tire o primeiro { e o } . Você pode fazer isso com a função replace, ou se você quiser fazer isso com uma função, =MID(A1,2,LEN(A1)-2) .

Isso resultará em dados de origem como:

Emseguida,selecioneacolunaA(sem{})e,nafaixadeopções,selecioneDados>Ferramentasdedados>Textoparacolunas.Useasseguintesopções:

Emseguida,vocêteráasinformaçõesapresentadasemquatrocolunas:

Etapa2:escolhaoIDdopedidonascolunas

Depoisdisso,vocêpodefazeroquequiserparapegaroIDdopedido.UmsimplesseriacolocarumafórmulanacolunaGcomacélulaG1comafórmulaabaixo:

=INDIRECT("RC"&MATCH("order*id",A1:F1,0)+1,FALSE)

Como "OrderId" também pode estar no formato "order_id" do exemplo, usamos um curinga * para fazer a correspondência. A fórmula, em seguida, buscar a célula à direita de "OrderId".

    
por 31.08.2017 / 11:03
0

Para este tipo de problemas, eu uso Add-in Regex Find / Replace
( Eu não sou afiliado de alguma forma com isso, apenas um usuário entusiasta )

Com isso, você pode usar expressões regulares, por exemplo:% =RegExReplace(UPPER(A1),".*ORDER_?ID"":""([^""]+)"".*","$1")

    
por 04.09.2017 / 09:02
0

Na célula B2, use a função Mid

Texto = A2

Start Number = Use a função Search (a pesquisa não diferencia maiúsculas de minúsculas enquanto Find is) para localizar a posição de "id" na célula A2 a partir da posição 1 e adicione o número de caracteres ao Número do Pedido.

O número de caracteres é a diferença do número inicial para a próxima posição de aspas duplas (caractere ASCII 34).

=MID(A2,SEARCH("id",A2,1)+5,(FIND(CHAR(34),A2,(SEARCH("id",A2,1)+5))-(SEARCH("id",A2,1)+5)))

EDIT para permitir "ID / ID" adicional no campo "E-mail" ou no ID do pedido sem necessidade de adição ou VBA

Envolva instruções MID verdadeiras e falsas dentro de um IF que verifique se há mais de um ID e que o endereço de e-mail não é o primeiro campo separado por vírgulas.

 =IF(
AND((LEN(A2)-LEN(SUBSTITUTE(UPPER(A2),("ID"),"")))/LEN("ID")>1,ISERROR(FIND("@",LEFT(A2,FIND(",",A2)-1),1))=FALSE),

MID(A2,
FIND("~",SUBSTITUTE(UPPER(A2),"ID","~",2),1)+5,
FIND(CHAR(34),A2,FIND("~",SUBSTITUTE(UPPER(A2),"ID","~",2),1)+5)-(FIND("~",SUBSTITUTE(UPPER(A2),"ID","~",2),1)+5)
),

MID(A2,
SEARCH("ID",A2,1)+5,
(FIND(CHAR(34),A2,(SEARCH("ID",A2,1)+5))-(SEARCH("ID",A2,1)+5))
)
)
    
por 31.08.2017 / 17:28
-1

Com base nas informações que você apresentou, O ID do pedido é executado a partir do primeiro A ou 1 no campo, até o primeiro seguinte " (quote) - isso não é difícil. É mais fácil usar algumas "colunas auxiliares":

  • C1=IFERROR(FIND("A",$A1), LEN($A1)+1)
  • D1=IFERROR(FIND("1",$A1), LEN($A1)+1)
  • E1=MIN($C1,$D1)
  • F1=FIND("""", $A1, $E1)

C1 e D1 localizam os primeiros A e 1 , respectivamente, na célula A1 . Se não houver, FIND retornará um erro e, usando IFERROR , definimos o valor para o comprimento de A1 mais um; isto é, o deslocamento do próximo caractere após o último caractere. E1 é o menor deles; Portanto, se pelo menos um A ou 1 for encontrado, E1 apontará para o primeiro. Se não houver, então é também o tamanho + 1.

E agora F1 encontra o primeiro " após o acima. Se não houver " , isso é um erro. Se não houver um A ou um 1 , E1 é o comprimento de A1 + 1, e assim F1 também é um erro.

Então, finalmente, definimos

  • B1=IF(ISERROR($F1), "ERROR", MID($A1, $E1, $F1-$E1))

Se F1 for um erro, basta exibir um indicador ERROR . Caso contrário, extraia a substring do MIDdle de A1 , começando no local do A ou 1 , e com um comprimento que leva até (mas não incluindo) a delimitação " .

    
por 31.08.2017 / 08:30