lunes, 11 de abril de 2011

EXCEL: SEPARAR CADENAS DE CARACTERES EN UNA CELDA

TEMA DE LA CONSULTA: Mi problema consiste en separa una cadena de caracteres que se encuentra en una misma celda a otras dos celdas diferentes. El problema es que cada cadena de caracteres es diferente y solo se que lo que debo separar está a partir del último espacio en blanco. Por ejemplo:

 


RESPUESTA: Aquí te muestro una solución que es engorrosa y larga pero que la puedes sistematizar para casos análogos. Después que la entiendas te será fácil generalizarla y adaptarla  a tús necesidades. Con este objetivo estoy desglosando la solución que después podras integrar a tú gusto.

Lo primero que te propongo es que dividas el problema en pequeños problemas más faciles de resolver.
    • Encontrar el lugar de separación.
    • Separar la parte de alante.
    • Separar la parte de atras.
Nota: La clave del problema es precisamente encontrar el lugar de la separación y marcarla.
  • Encontrar el lugar de la separación (las referencias que hacemos son con respecto a la imagen que mostramos arriba.)
  1. En A4 escribe la fórmula =SUSTITUIR(A1, " ", "") ------con esta fórmula cierras la cadena de caracteres de manera que puedas medirla sin espacios. (Estoesunapruebaqueestamoshaciendo12a23g56)
  2. Ahora en A5 mide la cadena cerrada =LARGO(A4) ----el resultado te ayudará a saber el número de espacios en blanco que tienes, el resultado de la fórmula quedaría así (41)
  3. Ahora en A6 voy a medir la cadena abierta (la original) =LARGO(A1) ----(48)
  4. En A7 voy a restar =A6-A5 ---- Esto me daría la cantidad de espacios en blanco que tengo, y por consiguiente el que ocupa la última posición. (7)
  5. Voy ahora a sustituir el último espacio en blanco por un caracter especial para usarlo de bandera A8 =SUSTITUIR(A1, " ", "*", A7) ----- en este caso uso el * porque no está en el ejemplo enviado, puede ser cualquiera, y agrego el valor que toma A7 para que lo haga en el septimo espacio en blanco, o sea el último. (Esto es una prueba que estamos haciendo*12a23g56)
  6. Por último en este subproblema ubico la posición del * A9 sería =ENCONTRAR("*",A8) ----En este caso me devuelve la posición contando desde el inicio de la cadena de caracteres. (39). Fin del primer subproblema.
  • Ahora vamos a separar en A2 la primera parte de la cadena.
  1. En la celda A2 escribimos =IZQUIERDA(A1,A9) ---- Esto saca del texto en A1 la cantidad de caracteres 39 que aparece en A9. (Esto es una prueba que estamos haciendo)
  • Por último en A3 voy a sacar el final de la cadena.
  1. En la celda A3 escribimos =DERECHA(A1,A6-A9) ----Ahora se extrae el texto que aparezca de derecha a izquierda contando 9 caracteres que es la diferencia entre la longitud de la cadena completa y la posición de *. (12a23g56)
Bueno hemos pasado trabajo pero finalmente resuelve el problema y automatiza el problema por completamiento en caso de que sea una larga columna. Este es un problema común cuando se pasa información de un PDF a excel.
Nuevamente tengo la oportunidad de ayudar a quien lo necesite.
___________________________________________________________________________
Licencia Creative Commons
SEPARAR CADENAS DE CARACTERES EN UNA CELDA por Miguel Suárez se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Basada en una obra en ti-consulta.blogspot.com.

2 comentarios:

  1. buena tarde mi consulta es la siguiente:
    Necesito separar y eliminar de esta lista los numeros 3000v y dejar los anteriores:

    303000v
    453000v
    1003000v
    153000v

    y dejar :

    30
    45
    100
    15

    estoy usando oficce 2007 gracias

    ResponderEliminar
    Respuestas
    1. Martin
      la solución es utilizar la opción de reemplazar en toda la hoja o libro o rango donde lo desees y cambiar 3000v o la cadena que desees por el vacio porque quieres eliminarlo.

      Eliminar