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

Discute sobre la aplicación de hojas de cálculo
Responder
Avatar de Usuario
luysess
Mensajes: 17
Registrado: Lun Abr 06, 2015 3:15 am
Ubicación: Venezuela

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

Mensaje por luysess »

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:
INICIALES_Funcion_con_FUNCION_SPLIT.ods
Función de usuario para extraer iniciales de nombres
(18.12 KiB) Descargado 245 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
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

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

Mensaje por SLV-es »

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

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

Mensaje por luysess »

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

	'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) Descargado 153 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()

Mensaje por luysess »

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) Descargado 155 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
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

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

Mensaje por SLV-es »

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

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

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

Mensaje por luysess »

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
Responder