¿Cómo eliminar el resto de la información de una celda y conservar solo una parte?

¿Cómo eliminar el resto de la información de una celda y conservar solo una parte?

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 Ao 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: ingrese la descripción de la imagen aquí

A continuación, seleccione la columna A (sin { }) y en la cinta, seleccione Datos > Herramientas de datos > Texto a columnas. Utilice las siguientes opciones: ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Luego tendrás la información presentada de forma ordenada en 4 columnas: ingrese la descripción de la imagen aquí

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". ingrese la descripción de la imagen aquí

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

ingrese la descripción de la imagen aquí

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 Ao 1en 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)

C1y D1busque el primero Ay 1, respectivamente, en la celda  A1. Si no hay ninguno, FINDdevuelve un error y, usando IFERROR, establecemos el valor en una longitud de A1más uno; es decir, el desplazamiento del siguiente carácter después del último carácter.  E1es el menor de estos; entonces, si se encontró al menos uno Ao , apunta al primero. Si no hay ninguno, entonces también es longitud+1.1E1

Y ahora F1encuentra el primero "después del anterior. Si no hay un ", esto es un error. Si no había an Ao a 1, E1la longitud es A1+1, por lo que F1también es un error.

Así que finalmente configuramos

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

Si F1es un error, simplemente muestre un ERRORindicador. De lo contrario, extraiga la subcadena del MIDdle de A1, comenzando en la ubicación de Ao 1y con una longitud que la lleve hasta (pero sin incluir) el delimitador ".

información relacionada