Como retirar o restante das informações de uma célula e manter apenas uma parte?

Como retirar o restante das informações de uma célula e manter apenas uma parte?

se possível, gostaria de retirar tudo e obter o ID do pedido. o problema é: Localização do ID do pedido e às vezes começa com Aou 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

Responder1

A vida pode ser mais fácil com a função “Texto para coluna” do Excel.

Passo 1 – Divida as cordas em colunas

Primeiro, retire o início {e o final }. Você pode fazer isso com a função replace ou, se quiser, com uma função, =MID(A1,2,LEN(A1)-2).

Isso resultará em dados de origem como: insira a descrição da imagem aqui

Em seguida, selecione a coluna A (sem { }) e na faixa de opções, selecione Dados > Ferramentas de dados > Texto para colunas. Use as seguintes opções: insira a descrição da imagem aqui insira a descrição da imagem aqui

Então você terá as informações apresentadas ordenadamente em 4 colunas: insira a descrição da imagem aqui

Etapa 2 - Escolha o ID do pedido nas colunas

Depois disso, você pode fazer o que quiser para pegar o ID do pedido. Uma solução simples seria colocar uma fórmula, digamos, na coluna G com a célula G1 tendo a fórmula abaixo:

=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 irá então buscar a célula à direita de “OrderId”. insira a descrição da imagem aqui

Responder2

Para este tipo de problemas eu usoSuplemento Localizar/Substituir Regex
(Não sou afiliado de forma alguma a ele, apenas um usuário entusiasta)

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

insira a descrição da imagem aqui

Responder3

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

Texto =A2

Número inicial = Use a função Pesquisar (a pesquisa não diferencia maiúsculas de minúsculas, enquanto Localizar é) para localizar a posição de "id" na célula A2 começando na posição 1 e, em seguida, 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 Email ou ID do pedido sem necessidade de complemento ou VBA

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

 =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))
)
)

Responder4

Com base nas informações que você apresentou - o ID do pedido vai do primeiro Aou 1no campo até o primeiro seguinte "(cotação) - isso não é difícil. É mais fácil se usarmos 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)

C1e D1encontre o primeiro Ae 1, respectivamente, na célula  A1. Se não houver, FINDretorna um erro e, usando IFERROR, definimos o valor como comprimento A1mais um; ou seja, o deslocamento do próximo caractere após o último caractere.  E1é o menor deles; então, se pelo menos um Aou 1foi encontrado, E1aponta para o primeiro. Se não houver, também será comprimento +1.

E agora F1encontra o primeiro "após o acima. Se não houver um ", isso é um erro. Se não houve um Aou a 1, E1o comprimento é A1+1 e F1também é um erro.

Então finalmente definimos

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

Se F1for um erro, basta exibir um ERRORindicador. Caso contrário, extraia a substring do MIDdle de A1, começando no local de Aor 1e com um comprimento que vá até (mas não incluindo) o delimitador ".

informação relacionada