¿Se puede separar apellidos acompañados de la proposición "De" en una misma celda?

La presente es para solicitar su ayuda nuevamente. Como podrán observar en la presente imagen; tengo una columna con varios apellidos, algunos de estos van acompañados de la proposición "De". Necesito una macro que me separe todo apellido con esta característica.

Respuesta
3

Si quieres separar la PREposición del apellido.

Por ejemplo: DELOPEZ el resultado DE LOPEZ

Prueba la siguiente macro

Sub Separar_Preposicion_De()
  With Range("A2", Range("A" & Rows.Count).End(xlUp))
    .Value = Evaluate(Replace("=IF({1},IF(LEFT(@,2)=""DE"",REPLACE(@,1,2,""DE ""),@))", "@", .Address))
  End With
End Sub

Adriel Ortiz Mangia , la idea, así lo entendí, es reemplazar "DE" por "DE " (y un espacio). Lo supongo, porque el título de la pregunta así lo dice: "separar apellidos".

Con bucle lo haría así:

Sub separar()
  Dim c As Range
  For Each c In Range("A2", Range("A" & Rows.Count).End(xlUp))
    If Left(c.Value, 2) = "DE" Then c.Value = "DE " & Mid(c.Value, 3)
  Next
End Sub

Yeison López , para evitar confusiones, es importante, poner ejemplos, pero también el resultado esperado, de esa manera recibirás ayuda de manera más eficiente.

1 respuesta más de otro experto

Respuesta
2

[Hola 

Macro 

Sub quitacaracter()
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        cadena = Cells(i, 1)
        If InStr(1, Mid(cadena, 1, 2), "DE") Then
        spr = Mid(cadena, 3, Left(Len(cadena), 2)): Cells(i, 1) = spr
        Else
            Cells(i, 1) = cadena
        End If
    Next i
     MsgBox "exito"
End Sub

Macro corregida

Sub quitacaracter()
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        cadena = Cells(i, 1)
        If InStr(1, Mid(cadena, 1, 2), "DE") Then
        spr = "DE " & Mid(cadena, 3): Cells(i, 1) = spr
        End If
    Next i
     MsgBox "exito"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas