se possível, gostaria de remover tudo e obter o ID do pedido. o problema é: Localização do ID do pedido e, algumas 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
A
ou1
"? Se começar comA
ou1
não for a característica definidora, como saber onde começa o ID do pedido?Respostas:
A vida pode ser mais fácil com a função "Texto para coluna" do Excel.
Etapa 1 - Pique as cordas em colunas
Primeiro, retire a guia
{
e a trilha}
. Você pode fazê-lo com a função de substituição ou, se desejar, com uma função=MID(A1,2,LEN(A1)-2)
,.Isso resultará em dados de origem como:
Em seguida, selecione a coluna A (sem
{ }
) e, na faixa de opções, selecione Dados> Ferramentas de dados> Texto em colunas. Use as seguintes opções:Em seguida, você terá as informações apresentadas ordenadamente em 4 colunas:
Etapa 2 - Escolha o ID do pedido nas colunas
Depois disso, você pode fazer o que quiser para selecionar o ID do pedido. Um simples seria colocar uma fórmula, digamos, na coluna G com a célula G1 com a fórmula abaixo:
Como "OrderId" também pode estar no formato "order_id" do exemplo, usamos um curinga
*
para fazer a correspondência. A fórmula buscará a célula à direita de "OrderId".fonte
Para esse tipo de problema, eu uso o suplemento Regex Find / Replace
( 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")
fonte
Na célula B2, use a função Mid
Texto = A2
Número inicial = Use a função Pesquisa (a pesquisa não diferencia maiúsculas de minúsculas, enquanto Localizar é) para localizar a posição do "id" na célula A2 a partir da posição 1 e adicione o número de caracteres ao Número do pedido.
Número de caracteres é a diferença do número inicial para a próxima posição de aspas duplas (caractere ASCII 34).
EDITAR para permitir "ID / ID" adicional no campo E-mail ou ID do pedido sem a necessidade de suplemento ou VBA
Coloque as instruções MID verdadeiras e falsas dentro de um IF que verifique se há mais de um ID e se o endereço de email não é o primeiro campo separado por vírgula.
fonte
Com base nas informações que você apresentou - o ID do pedido é executado desde o primeiro
A
ou1
no campo, até o primeiro"
(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)
C1
eD1
encontre o primeiroA
e1
, respectivamente, na célulaA1
. Se não houver,FIND
retorna um erro e, usandoIFERROR
, definimos o valor com o comprimento deA1
mais um; ou seja, o deslocamento do próximo caractere após o último caractere.E1
é o menor deles; portanto, se pelo menos umA
ou1
foi encontrado,E1
aponta para o primeiro. Se não houver, também terá o comprimento + 1.E agora
F1
encontra o primeiro"
após o acima. Se não houver"
, isso é um erro. Se não houve umA
ou a1
,E1
é o comprimento deA1
+1 eF1
também é um erro.Então, finalmente, definimos
B1
→=IF(ISERROR($F1), "ERROR", MID($A1, $E1, $F1-$E1))
Se
F1
houver um erro, basta exibir umERROR
indicador. Caso contrário, extraia a substring do MIDdle deA1
, começando no local doA
ou1
, e com um comprimento que leve até (mas não incluindo) a delimitação"
.fonte