Página 1 de 1
[RESUELTO] Separar los apellidos compuestos
Publicado: Dom Sep 13, 2015 12:42 am
por richardcns
buenas noches porfavor necesito su ayuda, lo que pasa es que quiero separar los apellidos compuestos, existe una macro que permite hacer esto pero elproblema es que la macro solo se ejecua en excel mas no en la hoja de calc, es por esoque quisier me la raduzcan al lenguaje de openoffice calc para que se ejecute correctamente.
Esta es la macro de excel;
Código: Seleccionar todo
Function SEPARARAPELLIDOS(rng As Range) As String
Dim nombreArr() As String
Dim nuevaCadena As String
Dim i As Integer
'Dvidir el nombre por palabras en un arreglo
nombreArr = Split(Trim(rng.Value))
'Analizar cada palabra dentro del arreglo
For i = 0 To UBound(nombreArr)
Select Case LCase(nombreArr(i))
'Palabras que forman parte de un apellido compuesto
'Agregar nuevas palabras separadas por una coma
Case "de", "del", "la", "las", "los", "san"
'Insertar espacio en blanco
nuevaCadena = nuevaCadena & nombreArr(i) & " "
Case Else
'Insertar caracter delimitador
nuevaCadena = nuevaCadena & nombreArr(i) & "@"
End Select
Next
'Remover el último caracter delimitador de la cadena
If Right(nuevaCadena, 1) = "@" Then
nuevaCadena = Left(nuevaCadena, Len(nuevaCadena) - 1)
End If
SEPARARAPELLIDOS = nuevaCadena
End Function
esta macro la saque de la siguiente pagina:
//exceltotal.com/como-separar-nombres-y-apellidos-en-excel/
por su colaboracion mil gracias.
Re: Separar los apellidos compuestos
Publicado: Dom Sep 13, 2015 10:00 am
por xiseme
Bienvenid@
No hay "
una macro" que haga eso, habrá cientos (no digo miles por no parecer exagerado) De hecho si buscas en el foro por «separar nombre y apellidos» ya encontrarás alguna.
Si tu propósito es hacerlo en Basic para AOO/LibO te será fácil a poco que le des un
vistazo al libro de Mauricio o al apartado de
macros de la wiki
- Si acaso tu propósito fuera que te hagan el trabajo,
petición aquí
Re: Separar los apellidos compuestos
Publicado: Lun Sep 14, 2015 1:32 am
por mauricio
Re: Separar los apellidos compuestos
Publicado: Lun Sep 14, 2015 3:33 pm
por SLV-es
Re: Separar los apellidos compuestos
Publicado: Lun Sep 14, 2015 6:57 pm
por fornelasa
richardcns » solo como aclaración, el codigo mostrado no separa los "apellidos compuestos". Lo que hace es "algo" similar a este archivo ejemplo con formulas:
Saludos.
Re: Separar los apellidos compuestos
Publicado: Jue Sep 17, 2015 8:56 am
por PepeOooSevilla
Hola.
Coincido con nuestro compañero
fornelasa. No obstante, aquí tienes el código de la función. Como puedes ver los cambios han sido mínimos.
Código: Seleccionar todo
REM ***** BASIC *****
Option Explicit
Function SEPARARAPELLIDOS(CadOriginal As String) As String
Dim nombreArr() As String
Dim nuevaCadena As String
Dim i As Integer
'Dividir el nombre por palabras en un arreglo
nombreArr = Split(Trim(CadOriginal))
'Analizar cada palabra dentro del arreglo
For i = 0 To UBound(nombreArr)
Select Case LCase(nombreArr(i))
'Palabras que forman parte de un apellido compuesto
'Agregar nuevas palabras separadas por una coma
Case "de", "del", "la", "las", "los", "san"
'Insertar espacio en blanco
nuevaCadena = nuevaCadena & nombreArr(i) & " "
Case Else
'Insertar caracter delimitador
nuevaCadena = nuevaCadena & nombreArr(i) & "@"
End Select
Next
'Remover el último caracter delimitador de la cadena
If Right(nuevaCadena, 1) = "@" Then
nuevaCadena = Left(nuevaCadena, Len(nuevaCadena) - 1)
End If
SEPARARAPELLIDOS = nuevaCadena
End Function
Adjunto archivo.
Saludos cordiales.
Re: Separar los apellidos compuestos
Publicado: Vie Sep 18, 2015 4:43 pm
por richardcns
PepeOooSevilla escribió:Hola.
Coincido con nuestro compañero
fornelasa. No obstante, aquí tienes el código de la función. Como puedes ver los cambios han sido mínimos.
Código: Seleccionar todo
REM ***** BASIC *****
Option Explicit
Function SEPARARAPELLIDOS(CadOriginal As String) As String
Dim nombreArr() As String
Dim nuevaCadena As String
Dim i As Integer
'Dividir el nombre por palabras en un arreglo
nombreArr = Split(Trim(CadOriginal))
'Analizar cada palabra dentro del arreglo
For i = 0 To UBound(nombreArr)
Select Case LCase(nombreArr(i))
'Palabras que forman parte de un apellido compuesto
'Agregar nuevas palabras separadas por una coma
Case "de", "del", "la", "las", "los", "san"
'Insertar espacio en blanco
nuevaCadena = nuevaCadena & nombreArr(i) & " "
Case Else
'Insertar caracter delimitador
nuevaCadena = nuevaCadena & nombreArr(i) & "@"
End Select
Next
'Remover el último caracter delimitador de la cadena
If Right(nuevaCadena, 1) = "@" Then
nuevaCadena = Left(nuevaCadena, Len(nuevaCadena) - 1)
End If
SEPARARAPELLIDOS = nuevaCadena
End Function
Adjunto archivo.
Saludos cordiales.
Amigo, pege el codigo que me envió, pero al momento de ejecutar me sale el siguiente mensaje:
"error de ejecucion de BASIC. El argumento no es opcional.
y se subraya donde dice:
nombreArr = Split(trim(cadOriginal))
Ayuda por favor! gracias!
Re: Separar los apellidos compuestos
Publicado: Vie Sep 18, 2015 6:33 pm
por mauricio
richardcns escribió:al momento de ejecutar
Cuentamos
exactamente que haces, para ejecutar.
Nota que es una función, no una subrutina (macro)...
Re: Separar los apellidos compuestos
Publicado: Vie Sep 18, 2015 8:27 pm
por richardcns
mauricio escribió:richardcns escribió:al momento de ejecutar
Cuentamos
exactamente que haces, para ejecutar.
Nota que es una función, no una subrutina (macro)...
Amigo ya se resolvio, creo que era algo que la pasaba al openoffice pero ya pude ejecutar la macro, y todo fuinciona muy bien Gracias!!!