Fórmula para separar texto en Excel

Excel nos permite separar el texto que se encuentre en una celda utilizando la función IZQUIERDA o DERECHA, dependiendo de cómo lo necesitemos.

Fórmula a utilizar.

Para separar un texto en Excel se debe utilizar una columna auxiliar, de modo que, si el texto está en la columna A, el texto separado se coloca en la columna B, con la siguiente fórmula:

=IZQUIERDA(A1; 5)

Con ello se extraen los primeros 5 caracteres del texto que hay en A1, y luego en la columna C, se utiliza la siguiente fórmula:

=DERECHA(A1; 3)

Con ello se extraen los últimos 3 caracteres que tiene el texto en A1 creando una separación.

Limitaciones de la fórmula.

Como es evidente, la anterior fórmula funciona cuando el texto a separar tiene el mismo número de caracteres en todas las celdas, si no es el caso, es preciso ajustar los criterios para cada celda.

Cuando hay separadores es más sencillo porque simplemente se separa el texto entre los separadores sin importar su longitud, así:

Para separar la primera parte del texto se utiliza la siguiente fórmula:

=SI.ERROR(IZQUIERDA(A1; ENCONTRAR("-"; A1)-1); A1)

Para separa la segunda parte del texto se utiliza la siguiente fórmula:

=SI.ERROR(EXTRAE(A1; ENCONTRAR("-"; A1)+1; LARGO(A1)); "")

El separador puede ser un guion o cualquier otro carácter o letra.

Si hay varios separadores como por ejemplo cuando se separa el nombre y los dos apellidos, se pueden utilizar las siguientes fórmulas:

Para separar el nombre:

=SI.ERROR(IZQUIERDA(A1; ENCONTRAR("-"; A1) - 1); A1)

Para separar el primer apellido:

=SI.ERROR(EXTRAE(A1; ENCONTRAR("-"; A1) + 1; ENCONTRAR("-"; A1 & "-"; ENCONTRAR("-"; A1) + 1) - ENCONTRAR("-"; A1) - 1); "")

Para separar el segundo apellido:

=SI.ERROR(EXTRAE(A1; ENCONTRAR("-"; A1 & "-"; ENCONTRAR("-"; A1) + 1) + 1; LARGO(A1) - ENCONTRAR("-"; A1 & "-"; ENCONTRAR("-"; A1) + 1)); "")

Es cuestión de adaptar las fórmulas según el texto que se vaya a separar.

Soluciones complejas.

Se puede dar el caso en que puede haber varios separadores (-,/,_), y que a la vez haya más de un tipo de separador en cada cadena de texto, y que además cada texto a separar tenga longitudes distintas, como cuando hay nombres, apellidos, ciudades, etc.

En tal caso no es posible separar los textos con fórmulas siendo necesario utilizar macros, que en todo caso necesitarán de algún criterio como un separador para poder tener un punto de referencia respecto a qué es lo que va a separar y desde donde y hasta donde va a separar.

Macro para separar texto.

La macro para separar textos que tiene separadores de distinto tipo y en distinta cantidad, es la siguiente, que podrá ser adaptada según la necesidad de cada usuario.

Sub Separartexto()
Dim ws As Worksheet
Dim columna As Range
Dim celda As Range
Dim palabras() As String
Dim separadores As Variant
Dim i As Integer
Dim j As Integer
'Definir la hoja de trabajo y la columna donde está el texto a separar.
Set ws = ActiveSheet
Set columna = ws.Range("A:A")
' Lista de separadores
separadores = Array("/", "-", "_") ' Puede agregar más separadores según sea necesario.
' Desactivar actualizaciones automáticas y advertencias
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' Recorrer cada celda en la columna A
For Each celda In columna
If Not IsEmpty(celda.Value) Then
' Reemplazar los separadores con espacios
For i = LBound(separadores) To UBound(separadores)
celda.Value = Replace(celda.Value, separadores(i), " ")
Next i
' Dividir la cadena en palabras
palabras = Split(celda.Value, " ")
' Colocar cada palabra separada en una columna diferente.
For j = LBound(palabras) To UBound(palabras)
celda.Offset(0, j + 1).Value = palabras(j)
Next j
End If
Next celda
' Activar nuevamente actualizaciones automáticas y advertencias
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Por ejemplo, si tenemos Pedro-Maria-Prieto_Zuleta/Bototá separará cada palabra, y cada palabra será colocada en una columna diferente.

Además, la macro separará todo el texto de origen eliminando los separadores y reemplazándolos por un espacio en blanco, de modo que en la columna A aparecerá todo el texto separado. En consecuencia, si desea conservar el texto original sin separar debe hacer una copia de seguridad del archivo antes de ejecutar la macro.

En este caso no interesa la longitud del texto, ni la cantidad de separadores que tenga, por lo que sólo debe ajustar los valores en la macro según sus necesidades particulares, como el rango de donde está el texto a separar y la clase de separadores que tiene.

Recomendados.

Compártalo en Facebook Compártalo en Twitter Compártalo en Whatsapp
Deje su opinión o su pregunta.

Regístrese para informarle cuando se responda su pregunta.

Este sitio web utiliza cookies propias y de terceros para ofrecer un mejor servicio. Al seguir navegando acepta su uso.