[RESUELTO] Extraer iniciales de nombres usando función SPLIT

Discute sobre la aplicación de hojas de cálculo

[RESUELTO] Extraer iniciales de nombres usando función SPLIT

Notapor luysess » Jue Abr 16, 2015 9:44 pm

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/viewtopic.php?f=21&t=10797&p=46276&hilit=Extraer+iniciales+de+nombres#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:

INICIALES_Funcion_con_FUNCION_SPLIT.ods
Función de usuario para extraer iniciales de nombres
(18.12 KiB) 95 veces


Este proyecto fue desarrollado conjuntamente en AOO 4.1.1 bajo WinXP y LibreOffice 3.4 en Linux Canaima.

LuySess
Ú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
Avatar de Usuario
luysess
 
Mensajes: 17
Registrado: Lun Abr 06, 2015 3:15 am
Ubicación: Venezuela

Re: Extraer iniciales de nombres usando la función SPLIT()

Notapor SLV-es » Vie Abr 17, 2015 9:31 am

:bravo: :bravo: :bravo:
+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
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Extraer iniciales de nombres usando la función SPLIT()

Notapor luysess » Vie Abr 17, 2015 5:49 pm

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:

Código: Seleccionar todo   Expandir vistaContraer vista
   '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


Con esto se resuelve el problema planteado!

Todas las modificaciones realizadas al código de la función las consiguen en el siguiente documento:

INICIALES_Funcion_con_FUNCION_SPLIT-DEFINITIVOx.ods
Funcion de extracción de iniciales ampliada!
(18.68 KiB) 44 veces


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
Avatar de Usuario
luysess
 
Mensajes: 17
Registrado: Lun Abr 06, 2015 3:15 am
Ubicación: Venezuela

Re: Extraer iniciales de nombres usando la función SPLIT()

Notapor luysess » Lun Abr 20, 2015 3:37 pm

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 :D )!

INICIALES_Funcion_con_FUNCION_SPLIT-ULTIMA.ods
Última versión de la función Extraer Iniciales, basada en la Función Split()
(19.26 KiB) 41 veces



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
Avatar de Usuario
luysess
 
Mensajes: 17
Registrado: Lun Abr 06, 2015 3:15 am
Ubicación: Venezuela

Re: Extraer iniciales de nombres usando la función SPLIT()

Notapor SLV-es » Mar Abr 21, 2015 7:52 pm

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?


Supongo que en ese caso, invertiríamos gracias a la coma existente:
Código: Seleccionar todo   Expandir vistaContraer vista
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
...


Saludos
+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
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: [RESUELTO] Extraer iniciales de nombres usando función S

Notapor luysess » Mié Abr 22, 2015 3:29 am

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
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
Avatar de Usuario
luysess
 
Mensajes: 17
Registrado: Lun Abr 06, 2015 3:15 am
Ubicación: Venezuela


Volver a Calc

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 9 invitados