Extraer texto entre dos caracteres en Excel

Extraer texto entre dos caracteres en Excel

Tengo una columna xls con la siguiente plantilla:

Model : QE85Q80T,Diagonala cm / inch : 216 cm / 85 inch,Smart TV : Da,Format : Ultra HD 4K,Tip ecran : QLED,Rezolutie (pixeli) : 3840 x 2160,Tuner Digital : Da (DVB-T2 / C / S2) x 2,Difuzor integrat : 60 W,Wireless : Da,Ethernet : Da,Iesire audio digitala (optica) : x 1,CI (Slot) : PLUS,USB 2.0 : x 2,HDMI : x 4,Culoare : Negru,Putere consumata (W) : 257,Dimensiuni cu stand (mm) : 1892.8 x 1163.1 x 338.8,Greutate (Kg) : 50.1

Tenga en cuenta las variables: "Diagonala cm / pulgada"; "Televisión inteligente"; "Formatear" y así sucesivamente...

Todos ellos pueden tener valores diferentes.

Lo que intento lograr es extraer en una celda diferente el valor entre "Diagonal cm / pulgada :" y primero "," - en este caso el valor sería "216 cm/85 pulgadas".

Lo mismo en otra celda con el valor entre "Televisión inteligente :" y primero "," - el valor sería "da"Y así para el resto...

Después de varias búsquedas en Google, se me ocurrió la fórmula:

=MEDIO(F2,BUSCAR("Diagonal cm / pulgada :",F2)+3,BUSCAR(",",F2)-BUSCAR("Diagonal cm / pulgada :",F2)-4)

El problema es que no me devuelve nada.

que estoy haciendo mal?

Respuesta1

Qué tal si:

=LEFT(MID(A1,FIND("Diagonala cm / inch : ",A1)+LEN("Diagonala cm / inch : "),999),-1+FIND(",",MID(A1,FIND("Diagonala cm / inch : ",A1)+LEN("Diagonala cm / inch : "),999)))

ingrese la descripción de la imagen aquí

Respuesta2

Bueno, esto es feo y funciona, pero no estoy seguro de cómo se adaptará a tus necesidades. Creo que sí si tienes referencias. En cualquier caso, aquí está la fórmula:

    =MID(B2,(SEARCH("Diagonala cm / inch :",B2)+LEN("Diagonala cm / inch :")),(SEARCH(",",B2,SEARCH("Diagonala cm / inch :",B2))-(SEARCH("Diagonala cm / inch :",B2)+LEN("Diagonala cm / inch :"))))

Y así es como se me ocurrió:

ingrese la descripción de la imagen aquí

Básicamente, la fórmula arroja los mismos resultados que

    =mid(b2,39,17)

Respuesta3

Para saber qué utilizar, quizás a uno le gustaría seguir el siguiente enfoque:

=LET(SearchCell,A1,  StartingString,"Diagonala cm / inch : ",  EndingString,",",    MID(SearchCell,  FIND(StartingString,SearchCell)  +  LEN(StartingString),  FIND(EndingString,SearchCell,1+FIND(StartingString,SearchCell))  -  (FIND(StartingString,SearchCell)+LEN(StartingString))  )  )

(Me gusta Isolatedel uso de LEN()para evitar codificar la longitud de la cadena. Uno lo sabría, por supuesto, por lo que no sería un problema, pero termina ahí, por así decirlo, y no es fácilmente extensible a una solución más general. que uno podría querer lograr después de escribir la fórmula básica y usarla por un tiempo, ¡se debe ayudar a actualizar cuando sea posible!)

El enfoque consiste en encontrar el punto inicial del resultado deseado, luego el punto final y, por tanto, el número de caracteres necesarios de la cadena de entrada. De ahí FIND()la suma de la longitud de la cuerda de localización. Y también FIND()para ubicar "," después de ese punto que necesita el punto de inicio con 1 agregado para FIND()comenzar allí y no confundirse con comas anteriores.

Eso es sencillo y lo que ellos llaman "feo"... oh bueno... Para la actualización, use la LET()función. Uno podría dejarse llevar por eso, pero sugiero usarlo solo para cambiar las entradas de la fórmula: la celda en la que buscar, la cadena inicial y la cadena final. De esa manera, cambiar la celda buscada es fácil ya que ocurre en un solo lugar, no en las seis o más o menos en las que la fórmula la usa. También debería acelerarlo ya que es un cálculo, no seis. Las dos cadenas de límites también son fáciles de editar ya que también están ahí al principio, por lo que la fórmula se puede adaptar fácilmente para realizar la segunda búsqueda solicitada y otras. También resulta bastante fácil usar celdas de entrada para contener cadenas para los límites.

Creo que un mayor uso de LET()aquí restaría valor a la comprensión del trabajo de la fórmula, aunque otros cerebros funcionan de manera diferente y les gustaría poner sus componentes en Let()forma de rangos con nombre de alcance celular (referencia de Excel allí, los programadores los llamarían variables) y luego la fórmula de trabajo sería algo mínimo. Si eso redujera el tamaño TOTAL de la fórmula, probablemente sugeriría hacerlo, pero no lo haría en este caso, así que... Pero en verdad, tendría el sentido opuesto para otra persona, así que para ellos, ¿por qué? ¿no?

Supongo que cualquiera que lea el problema realmente querrá lo anterior, una forma de lograr lo que se analiza. Pero lo que realmente se pregunta es ¿por qué falló la fórmula dada encontrada a través de Google?

Básicamente, porque no busca el comienzo correcto ni calcula la longitud correcta de cuerda a tomar. El primero SEEARCH(), por ejemplo: encuentra el inicio de la cadena límite y le suma... 3.... Sin ninguna buena razón, considerar que la lógica de la fórmula es esencialmente la misma que se usa en estas respuestas. Es necesario comenzar a construir la cadena MID()DESPUÉS de la cadena límite completa. Esa cadena tiene 22 caracteres, no 3, entonces... Entonces, el tercer parámetro para MID(), la longitud de la cadena a devolver, sale mal. Encuentra la coma que precede a la cadena límite y trabaja desde allí para dar una longitud negativa y, por lo tanto, un error. Otros datos de entrada podrían darle un retorno real, pero en realidad nunca darían un retorno correcto ya que utilizan opciones de entrada completamente incorrectas. Así que corrija esos problemas y debería tener una fórmula que funcione. Buen enfoque, no tan buena implementación. ¡Pero encontrar un buen enfoque casi siempre es lo más difícil! Sólo hay que reconsiderar cómo se eligen los detalles que conducen a los números generados como parámetros para esa MID()función deficiente.

información relacionada