Saltar al contenido

Separar nombre y apellidos compuestos

publicado

Hola que tal tengo una dificultad al separar nombres y apellidos compuestos de una lista de trabajadores que tengo , he probado con la opción que tiene excel pero solo separa los espacios (algunos apellidos y nombres tienen más de un espacio)

Acá les adjunto mi archivo

Pd

La página no me deja subir el archivo pero en la parte inferior les dejo el link para descargar xd

 

Este es el link

>>DESCARGAR ARCHIVO<<

Featured Replies

publicado

Hombre, si solo quieres la solución @JoseCAstillo , ya la tienes... Para qué complicarse la existencia :o

publicado

Esta macro separa el 99% de los nombres con un alto grado de fiabilidad.

Los nombres no separados se resaltan en rojo en la columna D.


Sub Separar()
Application.ScreenUpdating = False
For x = 2 To Range("B" & Rows.Count).End(xlUp).Row
   nombre = Range("C" & x)
   nombre = Replace(nombre, " DE LOS ", "*DE*LOS*")
   nombre = Replace(nombre, " DE LAS ", "*DE*LAS*")
   nombre = Replace(nombre, " DE LA ", "*DE*LA*")
   nombre = Replace(nombre, " DEL ", "*DEL*")
   nombre = Replace(nombre, " DE ", "*DE*")
   nombre = Replace(nombre, " LA ", "*LA*")
   partes = Split(nombre, " ")
   For p = 0 To UBound(partes)
      partes(p) = Replace(partes(p), "*DE*LOS*", " DE LOS ")
      partes(p) = Replace(partes(p), "*DE*LAS*", " DE LAS ")
      partes(p) = Replace(partes(p), "*DE*LA*", " DE LA ")
      partes(p) = Replace(partes(p), "*DEL*", " DEL ")
      partes(p) = Replace(partes(p), "*DE*", " DE ")
      partes(p) = Replace(partes(p), "*LA*", " LA ")
   Next
   If UBound(partes) > 3 Then
      Range("D" & x).Interior.Color = vbRed
      rojos = rojos + 1
   End If
   If UBound(partes) = 3 Then
      Range("E" & x) = partes(0) & " " & partes(1)
      Range("F" & x) = partes(2) & " " & partes(3)
   End If
   
   If UBound(partes) = 2 Then
      Range("E" & x) = partes(0)
      Range("F" & x) = partes(1) & " " & partes(2)
   End If
   
   If UBound(partes) = 1 Then
      Range("E" & x) = partes(0)
      Range("F" & x) = partes(1)
   End If
Next
MsgBox rojos & " NOMBRES NO CONVERTIDOS", vbCritical
End Sub

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.