Saludos Foristas de Calc!
Tras una conversación con SLV-es me quedó la inquietud de desarrollar este proyecto, que es complementario a otro de este foro (Extraer iniciales de nombres y apellidos) que se puede revisar en este vínculo: https://forum.openoffice.org/es/forum/v ... res#p46175 y en el Blog de SLV-es. Digo complementario porque es otra manera de realizar la extracción de las iniciales.
El proyecto esta como pan caliente, es decir, recien terminado, por lo que es muy probable que tenga errores de consideración, pero como el propósito fundamental es compartir conocimiento e información y retroalimentarnos con ello lo pongo a disposición de todo aquel que quiera echarle un vistazo y contribuir a mejorarlo.
Aquí el documento del proyecto:
Este proyecto fue desarrollado conjuntamente en AOO 4.1.1 bajo WinXP y LibreOffice 3.4 en Linux Canaima.
LuySess
[RESUELTO] Extraer iniciales de nombres usando función SPLIT
[RESUELTO] Extraer iniciales de nombres usando función SPLIT
Última edición por luysess el Lun Abr 20, 2015 3:42 pm, editado 2 veces en total.
Un Sabio sentenció: "¡Lo que no puede hacerse no debe iniciarse siquiera!" y otro, no menos, replicó: "¡Con paciencia y salivita el elefante enamoró a la hormiguita!".
AOO 4.1, LibO 4.3 WinXp SP3 - LibO 3.4.3 Canaima GNU/Linux 3.1.
LuySess
AOO 4.1, LibO 4.3 WinXp SP3 - LibO 3.4.3 Canaima GNU/Linux 3.1.
LuySess
Re: Extraer iniciales de nombres usando la función SPLIT()
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Re: Extraer iniciales de nombres usando la función SPLIT()
Feliz día, compañeros foristas!
Muy agradecido SLV-es por tu aprobación!!!
Pero... aquí vengo a mejorar (o será complicar) un poquito más la función...
CASO DE NOMBRES EN PUBLICACIONES CIENTÍFICAS:
Hay casos en los cuales se usan las iniciales de los nombres con puntos y los apellidos se escriben unidos con un guión ("-"), como es el caso de algunos Autores en publicaciones científicas, por ejemplo: L.J. Martínez-Bravo. En estos casos la función, tal como está hasta ahora, solo funcionará correctamente si hay espacios "blanco" separando las iniciales de los nombres y los apellidos del guión (ejemplo: L. J. Martínez - Bravo). En los casos en los que las iniciales están pegadas y el guíon está unido a los apellidos la separación no se realizará y, entonces, la funciónno NO dará un buen resultado.
Hay que realizar una modificación en la estructura del código de la función para atender con buenos resultados estos casos:
En el código he hecho modificaciones y he agragado lo siguiente:
Con esto se resuelve el problema planteado!
Todas las modificaciones realizadas al código de la función las consiguen en el siguiente documento:
Saludos, LuySess!
Muy agradecido SLV-es por tu aprobación!!!
Pero... aquí vengo a mejorar (o será complicar) un poquito más la función...
CASO DE NOMBRES EN PUBLICACIONES CIENTÍFICAS:
Hay casos en los cuales se usan las iniciales de los nombres con puntos y los apellidos se escriben unidos con un guión ("-"), como es el caso de algunos Autores en publicaciones científicas, por ejemplo: L.J. Martínez-Bravo. En estos casos la función, tal como está hasta ahora, solo funcionará correctamente si hay espacios "blanco" separando las iniciales de los nombres y los apellidos del guión (ejemplo: L. J. Martínez - Bravo). En los casos en los que las iniciales están pegadas y el guíon está unido a los apellidos la separación no se realizará y, entonces, la funciónno NO dará un buen resultado.
Hay que realizar una modificación en la estructura del código de la función para atender con buenos resultados estos casos:
En el código he hecho modificaciones y he agragado lo siguiente:
Código: Seleccionar todo
'DEPURACIONES PREVIAS:
'CASO1: INICIALES CON PUNTO, "PEGADAS"! ejemplo: L.J., sin espacio separando el primer punto de la segunda inicial.
'Podemos resolver introduciendo un espacio "blanco" después del punto:
g = InStr(1, sNombre, ".")
If g > 0 Then
'Si se encontró una coincidencia con la función InStr procedemos a sumarle un "blanco"
'a esa y todas las demás que puedan existir ( Medida contra usuario :) ):
d1Nombre = LEFT(sNombre, g-1)
For i = g to LEN(sNombre)
f = MID(sNombre, i, 1)
If f = "." Then f = ". "
d1Nombre = d1Nombre & f
Next
Else
d1Nombre = sNombre
End If
'CASO 2: APELLIDOS UNIDOS CON GUIÓN: ejemplo: Martínez-Bravo, sin espacios rodeando el guión).
'Podemos resolver sustituyendo el guión con un espacio "blanco" antes de usar la función SPLIT:
g = InStr(1, d1Nombre, "-")
If g > 0 Then
'Si se encontró una coincidencia con la función InStr procedemos a poner a "blanco"
'esa y todas las demás que puedan existir ( Medida contra usuario :) ):
d2Nombre = LEFT(d1Nombre, g-1)
For i = g to LEN(d1Nombre)
f = MID(d1Nombre, i, 1)
If f = "-" Then f = " "
d2Nombre = d2Nombre & f
Next
Else
d2Nombre = d1Nombre
End If
Todas las modificaciones realizadas al código de la función las consiguen en el siguiente documento:
Saludos, LuySess!
Un Sabio sentenció: "¡Lo que no puede hacerse no debe iniciarse siquiera!" y otro, no menos, replicó: "¡Con paciencia y salivita el elefante enamoró a la hormiguita!".
AOO 4.1, LibO 4.3 WinXp SP3 - LibO 3.4.3 Canaima GNU/Linux 3.1.
LuySess
AOO 4.1, LibO 4.3 WinXp SP3 - LibO 3.4.3 Canaima GNU/Linux 3.1.
LuySess
Re: Extraer iniciales de nombres usando la función SPLIT()
Saludos apreciados forista de Calc!
Vuelvo a este tema a implementar en el proyecto una sugerencia del compañero SLV-es, la cual es poner a mayúsculas el nombre antes de partirlo en fragmentos con la función SPLIT, pues bien, en el nuevo documento que adjunto está lo dicho.
En el código de macros están destacadas las modificaciones correspondientes. Fin de este punto!
En relación a los CASOS DE FORMATO DE NOMBRES USADOS EN PUBLICACIONES CIENTÍFICAS, entre quizá muchos casos más hay uno solo que voy a tratar, o mejor dicho, mencionar, y es el siguiente:
CASO 3: Y si estuviese INVERTIDA la posición de los apellidos con respecto a la de los nombres, como por ejemplo: "Martínez Bravo, L. J.", como también suele usarse... ¿QUÉ DEBERÍAMOS HACER?
Este caso se lo dejo al usuario curioso. Por mi parte, hasta aquí llego con este proyecto, trás lo cual doy por concluido este tema.
Nota: en el código de macros del proyecto (documento adjunto) hay una sugerencia simple de solución para este caso (para todo aquel que quiera y pueda desarrollarlo, por cierto, lo simple es la sugerencia, no la solución )!
LuySess
Vuelvo a este tema a implementar en el proyecto una sugerencia del compañero SLV-es, la cual es poner a mayúsculas el nombre antes de partirlo en fragmentos con la función SPLIT, pues bien, en el nuevo documento que adjunto está lo dicho.
En el código de macros están destacadas las modificaciones correspondientes. Fin de este punto!
En relación a los CASOS DE FORMATO DE NOMBRES USADOS EN PUBLICACIONES CIENTÍFICAS, entre quizá muchos casos más hay uno solo que voy a tratar, o mejor dicho, mencionar, y es el siguiente:
CASO 3: Y si estuviese INVERTIDA la posición de los apellidos con respecto a la de los nombres, como por ejemplo: "Martínez Bravo, L. J.", como también suele usarse... ¿QUÉ DEBERÍAMOS HACER?
Este caso se lo dejo al usuario curioso. Por mi parte, hasta aquí llego con este proyecto, trás lo cual doy por concluido este tema.
Nota: en el código de macros del proyecto (documento adjunto) hay una sugerencia simple de solución para este caso (para todo aquel que quiera y pueda desarrollarlo, por cierto, lo simple es la sugerencia, no la solución )!
LuySess
Un Sabio sentenció: "¡Lo que no puede hacerse no debe iniciarse siquiera!" y otro, no menos, replicó: "¡Con paciencia y salivita el elefante enamoró a la hormiguita!".
AOO 4.1, LibO 4.3 WinXp SP3 - LibO 3.4.3 Canaima GNU/Linux 3.1.
LuySess
AOO 4.1, LibO 4.3 WinXp SP3 - LibO 3.4.3 Canaima GNU/Linux 3.1.
LuySess
Re: Extraer iniciales de nombres usando la función SPLIT()
Supongo que en ese caso, invertiríamos gracias a la coma existente:luysess escribió: CASO 3: Y si estuviese INVERTIDA la posición de los apellidos con respecto a la de los nombres, como por ejemplo: "Martínez Bravo, L. J.", como también suele usarse... ¿QUÉ DEBERÍAMOS HACER?
Código: Seleccionar todo
Dim Nombre as string, a() as string
...
a()=split(nombre, ",")
if ubound(a)>0 ' existe una coma
Nombre=a(1) & " " & a(0) ' invertimos el nombre con los apellidos
endif
' si no, no hacemos nada, está en el orden correcto
...
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Re: [RESUELTO] Extraer iniciales de nombres usando función S
buenas noches!
Esa es una muy buena solucion SLV-es!
Ahora, hay que advertir al usuario, creo que siempre hay que advertir al usuario, y en este caso es, que debemos estar seguros que en los datos que manejemos siempre que se inviertan apellidos y nombres esta inversion se destacara usando la coma, como en el ejemplo de caso (o cualquier otro signo que indique que hay la inversion), porque de lo contrario no funcionara.
LuySess
Esa es una muy buena solucion SLV-es!
Ahora, hay que advertir al usuario, creo que siempre hay que advertir al usuario, y en este caso es, que debemos estar seguros que en los datos que manejemos siempre que se inviertan apellidos y nombres esta inversion se destacara usando la coma, como en el ejemplo de caso (o cualquier otro signo que indique que hay la inversion), porque de lo contrario no funcionara.
LuySess
Un Sabio sentenció: "¡Lo que no puede hacerse no debe iniciarse siquiera!" y otro, no menos, replicó: "¡Con paciencia y salivita el elefante enamoró a la hormiguita!".
AOO 4.1, LibO 4.3 WinXp SP3 - LibO 3.4.3 Canaima GNU/Linux 3.1.
LuySess
AOO 4.1, LibO 4.3 WinXp SP3 - LibO 3.4.3 Canaima GNU/Linux 3.1.
LuySess