sábado, 10 de agosto de 2013

Obtener Parte de una Cadena Alfanumérica

"Tengo una columna con más de 500 registros de un código alfanumérico. La estructura es: una serie de números, un espacio, una serie de letras. La cantidad de números y letras es variable pero siempre los separa un espacio. Necesito obtener sólo los números y que se queden como formato de valor (no de texto)".

La solución es muy sencilla utilizando tres funciones como VALOR, IZQUIERDA y HALLAR. Partimos del ejemplo que se muestra en la siguiente imagen y queremos obtenr lo que se muestra en la segunda imagen:

Anidando las tres funciones citadas podemos resolverlo en una sola fórmula pero empezaré detallando paso a paso para su mejor comprensión:

Lo primero es obtener la posición del espacio para cada código. Esto lo podemos hacer utilizando la función HALLAR. Esta función busca una cadena de texto dentro de una segunda cadena de texto y devuelven el número de la posición inicial de la primera cadena de texto desde el primer carácter de la segunda cadena de texto. Es muy similar a la función ENCONTRAR con la diferencia de que la función HALLAR no distingue en su búsqueda entre mayúsculas y minúsculas, mientras que la función ENCONTRAR sí lo hace. Nos situamos en la celda F4 y escribimos la fórmula:
=HALLAR(" ";B4)-1  Le estamos pidiendo que busque un espacio dentro del texto de B4. El resultado será 6 porque el espacio en blanco es el sexto carácter del código que se encuentra en la celda B4. Como además le restamos 1, el resultado será 5, que es, precisamente, el número de dígitos del primer código.
Ya tenemos el número de dígitos de todos los códigos de la columna B. A continuación tendremos que proceder a"extirparlos". Para ello nos situamos en la celda G4 y escribimos la siguiente fórmula:
=IZQUIERDA(B4;F4)   De esta manera obtendremos la parte numérica del código. Al tratarse de una función de texto, el resultado obtenido es un texto y no un valor como deseamos. Para solucionar esto procederemos con el último paso...
 Nos situasmos en la celda H4 y escribimos:
=VALOR(G4)   De esta manera convertimos los dígitos del código en valor (en vez de texto):

Como ya avancé, podemos resumir estos tres pasos anidando en una sola función que escribimos en  la celda D4:
=VALOR(IZQUIERDA(B4;HALLAR(" ";B4)-1))
Copiamos hacia abajo y trabajo terminado:

Para obtener la parte alfabética del código podemos utilizar la siguiente fórmula que escribimos en F4 y copiamos hacia abajo:
=DERECHA(B4;LARGO(B4)-HALLAR(" ";B4))

9 comentarios:

  1. me sirvio de mucho man... Grasias

    ResponderEliminar
  2. Buenos dias. A mi no me funcionó, ni como formula normal ni como matricila. Tengo Excel 2010, ¿que estaré haciendo mal? juanrgarces25@gmail.com

    ResponderEliminar
    Respuestas
    1. Hola Juan. Si me mandas tu hoja te digo. Un saludo.

      Eliminar
  3. Buenas noches, como puedo hacer para separar números de letras si no tengo espacio en blanco??? Gracias.

    ResponderEliminar
    Respuestas
    1. Hola Rebeca. Podrías especificar 3 ó 4 ejemplos de la estructura de letras y texto que te encuentras?
      Gracias

      Eliminar
    2. Hola Kiko, tengo una columna con importes y seguido una letra ejemplo: 12.0059,23H; 58,50H; 134,47D; 1150,00D y asi sucesivamente con mas de 600 registros. Necesito separar el importe en una columana y la letra en otra, entre los números y la letra no hay espacio.

      Eliminar
    3. Suponiendo que tienes los datos a partir de la celda A2, entonces la fórmula para obtener la letra es: =DERECHA(A2;1)
      Para obtener el número (y que se quede como importe y no como texto):
      =VALOR(IZQUIERDA(A2;LARGO(A2)-1))
      Un saludo.

      Eliminar
  4. Hola, quisiera saber cómo poder extraer el último caracter numérico contado de izquierda a derecha de una cadena alfanumérica de una celda, cuya longitud de texto es variable, por ejemplo:
    En la serie AA-001-AA, el último carácter numérico contado de izquierda a derecha corresponde al número uno (1).
    En la serie 2-AA-001A, el último carácter numérico contado de izquierda a derecha corresponde al número uno (1).
    En la serie 02-AAA-01, el último carácter numérico contado de izquierda a derecha corresponde al número uno (1).
    En la serie AAA-001-A, el último carácter numérico contado de izquierda a derecha corresponde al número uno (1).
    En la serie A-001-AA, el último carácter numérico contado de izquierda a derecha corresponde al número uno (1).
    En la serie A-2A-01, el último carácter numérico contado de izquierda a derecha corresponde al número uno (1).
    En la serie 02-AA-1, el último carácter numérico contado de izquierda a derecha corresponde al número uno (1).
    En la serie A-01-AAA, el último carácter numérico contado de izquierda a derecha corresponde al número uno (1).

    ResponderEliminar
    Respuestas
    1. Hola. Si me mandas tu mail te remito una posible solución. Un saludo

      Eliminar