Si es posible, me gustaría quitarlo todo y obtener el ID del pedido. el problema es: Ubicación del ID del pedido y, a veces, comienza con A
o 1
.
- Ejemplo de celda A1:
{"Ref":"bad order","OrderId":"ABSER27"}
- Ejemplo de celda A2:
{"OrderId":"ABSER27"}
- Ejemplo de celda A3:
{"order_id":"12345678","customer_email":"[email protected]"}
- Resultado deseado: B1 =
ABSER27
- Resultado deseado: B3 =
ABSER27
- Resultado deseado: B3 =
12345678
Respuesta1
La vida puede ser más fácil con la función "Texto a columna" de Excel.
Paso 1: corta las cuerdas en columnas
Primero, retire los cables delanteros {
y traseros }
. Puedes hacerlo con la función de reemplazo, o si quieres hacerlo con una función =MID(A1,2,LEN(A1)-2)
,.
Eso dará como resultado datos de origen como:
A continuación, seleccione la columna A (sin { }
) y en la cinta, seleccione Datos > Herramientas de datos > Texto a columnas. Utilice las siguientes opciones:
Luego tendrás la información presentada de forma ordenada en 4 columnas:
Paso 2: elija la identificación del pedido de las columnas
Después de eso, puede hacer lo que quiera para recoger la identificación del pedido. Una sencilla sería poner una fórmula en, digamos, la columna G con la celda G1 que tenga la siguiente fórmula:
=INDIRECT("RC"&MATCH("order*id",A1:F1,0)+1,FALSE)
Dado que "OrderId" también puede tener el formato "order_id" del ejemplo, utilizamos un comodín *
para realizar la comparación. Luego, la fórmula buscará la celda a la derecha de "OrderId".
Respuesta2
Para este tipo de problemas utilizoComplemento Regex Buscar/Reemplazar
(No estoy afiliado de ninguna manera a él, solo soy un usuario entusiasta.)
Con eso puedes usar expresiones regulares, por ejemplo:
=RegExReplace(UPPER(A1),".*ORDER_?ID"":""([^""]+)"".*","$1")
Respuesta3
En la celda B2 use la función Media
Texto =A2
Número de inicio = Use la función de búsqueda (la búsqueda no distingue entre mayúsculas y minúsculas, mientras que Buscar sí lo hace) para ubicar la posición de "id" en la celda A2 comenzando desde la posición 1 y luego agregue la cantidad de caracteres al número de pedido.
El número de caracteres es la diferencia entre el número inicial y la siguiente posición de comillas dobles (carácter ASCII 34).
=MID(A2,SEARCH("id",A2,1)+5,(FIND(CHAR(34),A2,(SEARCH("id",A2,1)+5))-(SEARCH("id",A2,1)+5)))
EDITAR para permitir "ID/id" adicional en el campo Correo electrónico o ID de pedido sin necesidad de complemento o VBA
Envuelva declaraciones MID verdaderas y falsas dentro de un IF que verifique que haya más de una identificación y que la dirección de correo electrónico no sea el primer campo separado por comas.
=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))
)
)
Respuesta4
Según la información que ha presentado (el ID del pedido va desde el primero A
o 1
en el campo, hasta el primero siguiente "
(cotización), esto no es difícil. Es más fácil si usamos algunas "columnas 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
y D1
busque el primero A
y 1
, respectivamente, en la celda A1
. Si no hay ninguno, FIND
devuelve un error y, usando IFERROR
, establecemos el valor en una longitud de A1
más uno; es decir, el desplazamiento del siguiente carácter después del último carácter.
E1
es el menor de estos; entonces, si se encontró al menos uno A
o , apunta al primero. Si no hay ninguno, entonces también es longitud+1.1
E1
Y ahora F1
encuentra el primero "
después del anterior. Si no hay un "
, esto es un error. Si no había an A
o a 1
, E1
la longitud es A1
+1, por lo que F1
también es un error.
Así que finalmente configuramos
B1
→=IF(ISERROR($F1), "ERROR", MID($A1, $E1, $F1-$E1))
Si F1
es un error, simplemente muestre un ERROR
indicador. De lo contrario, extraiga la subcadena del MIDdle de A1
, comenzando en la ubicación de A
o 1
y con una longitud que la lleve hasta (pero sin incluir) el delimitador "
.