Macro para separar apellidos de nombres en excel

Aprende a separar fácilmente apellidos y nombres en Excel, ideal para alimentar bases de datos.
- Macro para separar apellidos de nombres en excel: Una macro en Excel para separar apellidos de nombres es una herramienta útil cuando se tiene una lista de nombres completos en una sola celda y se desea dividirlos en columnas distintas. Su característica principal es que permite separar apellidos compuestos. Esto resulta especialmente práctico en grandes volúmenes de datos, ya que la macro automatiza el proceso de forma eficiente y uniforme. En lugar de hacer la separación manualmente con funciones básicas como
Izquierda
,Derecha
oBuscar
, una macro permite separar los nombres y apellidos de manera rápida, consistente y sin errores.
Aunque es posible realizar esta separación solo con fórmulas en Excel, existen ciertas limitaciones, especialmente con apellidos compuestos como "Del", "De La" y "De Los", entre otros. Estos apellidos, que incluyen conectores, presentan desafíos adicionales cuando se requiere que cada apellido ocupe una caelda por separado.
Para abordar estas dificultades, se ha desarrollado una macro sencilla que facilita la separación de apellidos y nombres.
Esta solución permite manejar de manera eficiente los apellidos compuestos y otros casos complejos, proporcionando una herramienta práctica para gestionar la información de forma ordenada y precisa.
- Características
- Código fuente de libre acceso para agregar conectores de apellidos compuestos en caso sea necesario.
- Procedimiento masivo y uniforme tomando en cuenta los criterios establecidos.
- Separación de la información por columnas.
- Descarga de archivo
Haz clic en el siguiente botón para descargar gratis la macro para separar apellidos de nombres en excel.
- ¿Cómo funciona la macro para separar apellidos de nombres en excel?
a.- En la hoja "Separar datos", se encuentra un formato bien estructurado para realizar el proceso de separación de apellidos y nombres.
b.- En la celda A10 y hacia abajo, se deben ingresar los datos que se deseen procesar.
c.- Para separar la información, simplemente presiona el botón "Separar".
d.- Los resultados del proceso aparecerán en las celdas C8 a E8 hacia abajo, ordenados correctamente.
e.- Si deseas borrar la información ingresada, presiona el botón "Limpiar".
f.- Para quienes necesiten agregar más conectores (apellidos compuestos), es posible editar el código de la macro siguiendo estos pasos:
- Presiona ALT + F11 para acceder al editor de Visual Basic.
- Localiza los procedimientos correspondientes y agrega, entre comillas, los conectores necesarios tanto para el apellido paterno como para el materno.
- Cierra el editor y la macro se actualizará automáticamente.
Option Private Module
Sub ejecutar()
Application.ScreenUpdating = False
On Error Resume Next
acomodar
Colocar_formula_normal
Apellido1
Apellido2
opcional
Application.ScreenUpdating = True
End Sub
Sub acomodar()
'limpiamos antes de empezar
z = Range("a65536").End(xlUp).Row ' no declaro publica para no confundirlos
Range("c9:e" & z).Clear
'todo a mayusculas
z = Range("a65536").End(xlUp).Row ' no declaro publica para no confundirlos
For Each Rng In Range("a9:a" & z)
Rng.Value = UCase(Rng.Value)
Next Rng
End Sub
Sub Colocar_formula_normal()
z = Range("a65536").End(xlUp).Row
'esta formula es de un ejemplo de emagister (foro de Excel) una de las
'mejores web para debatir
Range("c9").FormulaR1C1 = "=LEFT(RC[-2],(FIND("" "",RC[-2],1)-1))"
Range("d9").FormulaR1C1 = "=MID(RC[-3],LEN(RC[-1])+2,((FIND("" "",RC[-3],(LEN(RC[-1])+2))-(LEN(RC[-1])+1)))-1)"
Range("e9").FormulaR1C1 = "=MID(RC[-4],(LEN(RC[-2])+LEN(RC[-1])+3),LEN(RC[-4])-(LEN(RC[-2])+LEN(RC[-1])+2))"
'luego autocompletamos
Range("C9:E9").AutoFill Destination:=Range("C9:E" & z), Type:=xlFillDefault
End Sub
Sub Apellido1()
z = Range("a65536").End(xlUp).Row ' no declaro publica para no confundirlos
'separamos ahora los apellidos compuestos paternos
For i = 1 To 2 'el bucle es hasta dos veces debido a que pueden ser conformado de dos palabras ejempl "de los"
For Each Rng In Range("c9:c" & z)
Select Case Rng.Value
Case "LA", "DE", "DE LAS", "DEL", "DE LA", "DE LOS" 'si conoces mas palabras las colocas aqui
Rng.Value = Rng.Value & " " & Rng.Offset(0, 1).Value
End Select
Next Rng
Next i
End Sub
Sub Apellido2()
z = Range("a65536").End(xlUp).Row ' no declaro publica para no confundirlos
'separamos ahora los apellidos compuestos maternos
For i = 1 To 2
For Each Rng In Range("d9:d" & z)
Select Case Rng.Value
Case "LA", "DE", "DE LAS", "DEL", "DE LA", "DE LOS"
dato = Rng.Offset(0, 1).Value
'para que acabarse la vida nos ayudamos de una celda
Rng.Offset(0, 7).FormulaR1C1 = "=LEFT(RC[-6],(FIND("" "",RC[-6],1)-1))"
dato = Rng.Offset(0, 7).Value
Rng.Value = Rng.Value & " " & dato
End Select
Next Rng
Next i
'elimnaoms la columa de la que nos ayudamos y listo
Columns("k:l").Delete
End Sub
Sub opcional()
'si deseas elimnas las formulas y te quedas solo con los valores
z = Range("a65536").End(xlUp).Row ' no declaro publica para no confundirlos
Range("c9:e" & z).Copy
Range("c9:e" & z).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Sub limpiar()
z = Range("a65536").End(xlUp).Row ' no declaro publica para no confundirlos
Range("a9:e" & z).Clear
End Sub
- Capturas de pantalla: Puedes ampliar las imágenes haciendo clic sobre cada una de ellas.


Si quieres conocer otros artículos parecidos a Macro para separar apellidos de nombres en excel puedes visitar la categoría Aplicativos.
Deja una respuesta
Publicaciones Similares