Dividir nombres compuestos
- Jaime Franco Jimenez
- 13 mar 2023
- 3 Min. de lectura
Anteriormente, vimos una función de Power Query Zone, pues en este video, vamos a ver otra de las funciones personalizadas.
Vamos a un navegador, en la barra de búsqueda, ponemos:

En los resultados de búsquedas, hacemos clic en Power Query Zone.

La página tiene como objetivo almacenar funciones personalizadas en lenguaje M, las cuales resuelven problemas con no son fáciles de solucionar.
Hacemos clic en explorar todas las funciones.

Vemos un catálogo de funciones, pero para este ejemplo, nos desplazamos hasta Dividir Nombres Compuestos.
Podemos ver una breve explicación de lo que hace esta función personalizada.

Hacemos clic en:

Vemos una descripción de dicha función personalizada, divide una columna con nombres y/o apellidos compuestos, consiste en dejar en columnas separadas los nombres y apellidos…
Si tenemos un nombre como Alejandra de las Mercedes Palomino Rocha, debe de quedar Alejandra en una columna, de las Mercedes en otra columna, Palomino en otra columna, y, Rocha en otra.

Si seguimos bajando, vemos una introducción.

Bajamos hasta el nombre de la función, que se llama Splitter.SplitByCompoundName, y, mas abajo, vemos Clic aquí para ver función.

Hacemos clic en el enlace.
Vemos el código, pero no debemos de entenderlo.

Bajamos hasta el final del código, y, hacemos clic en view raw.

En la siguiente ventana, pulsamos CTRL mas A para seleccionar todo el código.
Pulsamos CTRL más C para copiar el código.
Los nombres de este ejemplo, los tengo en una hoja de Excel.

El modelo esta en formato de tabla, y, se llama:

Con una celda dentro del modelo, vamos a la pestaña de datos, dentro de obtener y transformar datos, hacemos clic en de una tabla o rango.

Tenemos el modelo en Power Query.

En la zona de consultas, hacemos clic con botón alternativo de ratón, desplegamos nueva consulta, desplegamos otros orígenes, y, seleccionamos consulta en blanco.

Hacemos clic en la consulta creada con botón alternativo de ratón, y, seleccionamos editor avanzado.

Borramos las líneas que hay, y, pulsamos CTRL más V para pegar.

Clic en listo.
Vamos a cambiar el nombre de la función, la llamaremos Dividir_nombres_compuestos.

Vamos a la consulta Nombre_Apellidos, vamos a dividir la columna Nombre/Apellidos, lo vamos a hacer para usar el código, por lo que, dentro de dividir columna, ya igual la opción que escojamos, para ello, hacemos clic con botón alternativo de ratón sobre la columna, desplegamos dividir columna, y, en la ventana de la derecha, seleccionamos cualquier opción.

Eliminamos el paso tipo cambiado, porque de momento no lo necesitamos.

Vemos el código que se ha creado.

Podemos ver la función que se está usando para dividir la columna, Splitter.SplitTextByDelimiter.

Pues, toda esta parte no la necesitamos.

Por lo que la borramos, en su lugar ponemos la función que hemos creado, Dividir_nombres_compuestos, y, cerramos paréntesis

Confirmamos, y, podemos ver como se ha dividido los nombres y apellidos en columnas.

En la primera línea, vemos el nombre Alejandra en la primera columna, en la siguiente columna vemos el apellido de las Mercedes, en la siguiente el apellido Palomino, y, en la siguiente el apellido Rocha.
Podemos ver como para los siguientes datos, han sido divididos correctamente.
El caso mas extremo, es el siguiente nombre, pero vemos como se ha dividido correctamente, vemos el primer apellido, de los Reyes, el segundo apellido, de la Castellana, y, el tercer apellido, y de la Peña.

En caso de haber casos mas sencillos, también, lo divide de forma correcta.
Si nos fijamos en el código, en las primeras líneas, podemos ver que hay un orden, primero los apellidos, y, luego los nombres, pro vemos que son argumentos opcionales.
El primer nombre, ApellidoPrimero, vemos que es un valor lógico, si indicamos TRUE, es SI, quiere decir que la estructura es primero los apellidos, y, luego los nombres, sin indicamos FALSE, que es el valor por defecto, quiere decir, que primero son los nombres, y, luego los apellidos.

En los siguientes datos, tenemos primero los apellidos, y, luego los nombres.

Volvemos a dividir por delimitador.
Borramos las mismas líneas que el ejemplo anterior, y, ponemos el nombre de la función.

Vemos que todo es correcto.

Miguel Angel Franco Garcia
Comments