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;
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.
Última edición por xiseme el Sab Sep 19, 2015 10:45 am, editado 1 vez en total.
Razón:Marcar como solucionado. Aunque él no lo marca, richardcns dice que ya lo está
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 acaso tu propósito fuera que te hagan el trabajo, petición aquí
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco. Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3 No respondo preguntas privadas, por favor, usa el foro
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.
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
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits) Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
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.
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))
Nota que es una función, no una subrutina (macro)...
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3 No respondo preguntas privadas, por favor, usa el foro