top of page

Como crear listas

Actualizado: 21 abr 2023

En este ejemplo, vamos a ver cómo podemos crear listas.


En una hoja en blanco, vamos a la pestaña de datos, dentro de obtener y transformar datos, desplegamos obtener datos, desplegamos de otras fuentes, y, seleccionamos consulta en blanco.

ree

















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

ree
















Borramos las comillas dobles después de la variable origen.


Para crear una lista debemos de usar las llaves ({}), pues después del signo igual, abrimos unas llaves, ponemos, por ejemplo, los números 1, 2, y 3, separados por coma.


Cerramos las llaves.

ree












Hacemos clic en listo.


Ya tenemos nuestra lista.

ree






Sabemos que es una lista por el siguiente icono.

ree








Si queremos crear una lista, por ejemplo, desde el numero 1 hasta el numero 20, no tenemos que escribir todos los números, ponemos el primer número, dos puntos (..) y el último número, esto creara una lista desde el primer número hasta el último número, volvamos al editor, y, ponemos desde el numero 1 al número 20.

ree















Tenemos nuestra lista.

ree
















Si quiero saber el número de elementos que compone una lista, puedo usar la función List.Count, que solo tiene un argumento que es lista, y, nos devuelve un número.

ree




















Es este caso, devuelve 20.

ree



Si queremos obtener el primer valor de la lista, usamos la función List.First, esta función tiene dos argumentos, siendo uno de ellos opcional.


List.First(list as list, optional defaultValue as any) as any


El argumento list, es la lista con la que vamos a trabajar, y, el argumento defaultValue, es el valor predeterminado si la lista está vacía, este argumento es opcional.


Volvemos al editor avanzado, y, vamos a usar dicha función.

ree





















Vemos que nos devuelve el primer valor.

ree




Podemos crear una lista con diferentes tipos de datos, volvamos al editor avanzado, y, borramos la función anterior, volvemos a las llaves, después, ponemos los números 1, 2, y, 3, ponemos una coma, y, por ejemplo, ponemos "a", "b", y, "c" entre comillas dobles.

ree
















Hacemos clic en listo, y, vemos una lista con los valores 1, 2, 3, a, b, y, c.

ree









Dentro de una lista, podemos poner números, textos, fechas, horas…


Vamos a hablar del operador ?, si volvemos al editor avanzado, vemos el código.

ree















Dentro de IN, le estamos diciendo que nos devuelva la variable Origen, la cual nos devuelve toda la lista de elementos, pero también, podemos indicar el elemento que queremos que nos devuelva, para ello, después de origen, abrimos unas llaves, y, entre las llaves, indicamos que elemento queremos que nos devuelva, recordar, que en Power Query, se empieza a contar desde cero, por ejemplo, voy a indicar que nos devuelva el elemento 3, es lo que se conoce como índice posicional.

ree

















Hacemos clic en listo, y, vemos que nos devuelve la letra “a”.

ree








Pero, que ocurre si ponemos un elemento que no esta dentro de la lista, por ejemplo, vamos a poner el elemento 7.

ree

















Hacemos clic en listo, y, vemos que nos devuelve un error.

ree





Volvemos al editor avanzado, después de las llaves ponemos el operador ?.

ree

















Hacemos clic en listo, y, ¿Qué ha ocurrido?, pues que ahora aparece NULL, y, no un error.

ree








Cuando accedemos a una columna en una tabla, lo que nos retorna es una lista, por eso, las listas son tan importantes.


Las listas quedan asociadas a las llaves ({}), y, los registros quedan asociados a los corchetes ([]).


Ahora, nos vamos a traer un modelo donde tenemos una fecha de inicio, y, una fecha de fin, pero no están ordenadas, queremos crear una lista donde aparezcan las fechas para cada mes, bien, vamos a traernos el archivo, para ello, cerramos y cargamos como una conexión, para ello, dentro de Power Query, vamos a la pestaña de inicio, dentro del grupo nueva consulta, desplegamos nuevo origen, desplegamos archivo, y, seleccionamos libro de Excel.

ree











Seleccionamos el modelo, y, hacemos clic en abrir.

ree










Para saber los días que tiene cada mes, debemos de contar dichos días por mes, vamos a crear una columna personalizada, donde vamos a usar la función List.Dates, que nos va a devolver una serie de valores fechas de un tamaño, indicándole un paso.


Sintaxis:

List.Dates(start as date, count as number, step as duration) as list


El primer argumento es start, que es la fecha o fechas para utilizar, el siguiente argumento es count, que va a definir el tamaño, y, el ultimo argumento es step, que es el paso, en este caso, son los días que hay en cada mes, esta función devuelve una lista.


Vamos a crear una columna personalizada, para ello, vamos a la pestaña agregar columna, y, hacemos clic en columna personalizada.

ree







Se abre la ventana de columna personalizada, dejo el nombre predeterminado, en la ventana de formula, ponemos la función y abrimos un paréntesis.


Como argumento start, en la ventana de columnas disponibles, hacemos doble clic en la columna inicio.

ree









Como como argumento count, restamos la fecha de fin menos la fecha de inicio.

ree









Coma, ahora viene el argumento step (paso), ponemos 1, quiere decir, que, desde la fecha de inicio, debe de ir un día mas hasta llegar al argumento count.


Pero ¿Cómo le indicamos 1 día?


Tenemos una función llamada #duration, que nos permite indicar días, horas, minutos, y, segundos a adelantar si es positivo, o, retrasar si el número es negativo.


Como tenemos que sumar 1 día, ponemos la siguiente expresión.

ree












Aceptamos y nos devuelve un error.

ree








¿A que es debido este error?

Vamos a crear una columna personalizada, donde restamos la columna fin menos la columna inicio.

ree










Aceptamos, y, tenemos una nueva columna con la diferencia de días, horas, minutos y segundos.

ree








En este formato no podemos ni sumar ni restar días, necesitamos el formato en número, para ello, tenemos una función llamada Number.From, que devolverá un valor numérico a partir de un valor dado.


Sintaxis

Number.From(value as any, optional culture as nullable text) as nullable number


El primer argumento es value, que es el valor con el que vamos a trabajar, el segundo argumento es opcional, y, es culture, que indica el país en el que estamos.


Solo necesitamos el primer argumento, volvemos a la columna personalizada, que creamos antes, para ello, vamos a pasos aplicados, en el paso personalizada agregada1, hacemos clic en la rueda dentada.

ree











Después del signo igual ponemos la función Number.From, al final de la expresión, cerramos el paréntesis de la función.

ree










Aceptamos, y, vemos como ahora aparece solo la diferencia de días.

ree









Pues es lo que tenemos que hacer en la primera expresión para poder sumar un día, pero antes, vamos a borrar el ultimo paso, para ello, hacemos clic en la X a la izquierda del paso personalizada agregada1.

ree














Hacemos clic en la rueda dentada del paso personalizada agregada.

ree
















Ponemos Number.From en la resta.

ree














Aceptamos, y, vemos una columna con listas.

ree










Seleccionamos una lista y vemos los valores de la lista en la parte inferior.


He seleccionado la fecha 03/05/2017, en la parte inferior, vemos las fechas que corresponden a mayo, pero si vemos la ultima fecha, no es el día 20, sino el día 12.

ree


















Para arreglar este problema, sumamos uno a la resta.

ree













Ahora, si tenemos los días correctos.

ree




















Hacemos clic en el icono de expandir, y, seleccionamos expandir en nuevas filas.

ree






Ya tenemos nuestro ejercicio resuelto, crear una columna con la fecha de inicio de la columna inicio, hasta la fecha de la columna fin, y, entre media los días entre ambas fechas.

ree












Hacemos clic con botón alternativo de ratón sobre la columna personalizado, y, seleccionamos quitar otras columnas.

ree





La ponemos como fecha.


Le cambio el nombre a fechas.

ree
















Cerramos y cargamos como una conexión.


En la ventana consultas y conexiones, hacemos clic con botón alternativo de ratón sobre la consulta fechas y seleccionamos cargar en.

ree















Se abre la ventana importar datos, marcamos tabla, y, la ponemos al lado del modelo.

ree














Aceptamos, y, ya tenemos nuestra columna de fechas.

ree









Veamos otro ejemplo, tenemos el modelo que suelo usar habitualmente, pero tenemos tres columnas de cantidades.

ree








Vamos a llevarlo a Power Query.


Vamos a crear una nueva columna con el valor máximo de las columnas cantidad1, 2, y 3, para ello, debemos de crear una lista, ya sabemos que para crear una lista debe de ir entre llaves, vamos a la pestaña agregar columna, y, hacemos clic en columna personalizada.

ree






Vamos a usar la función List.Max, que nos va a devolver el valor máximo de una o varias columnas, solo tiene un argumento que es la lista con la que vamos a trabajar, pues en la ventana de fórmulas, ponemos la función y abrimos un paréntesis.

ree










Pulsamos enter, abrimos unas llaves, de la ventana columnas disponibles seleccionamos cantidad1, ponemos coma, seleccionamos la columna cantidad2, ponemos coma, seleccionamos la columna cantidad3, cerramos las llaves, y, cerramos paréntesis.

ree













Aceptamos, y, en la nueva columna tenemos el valor máximo de las columnas cantidad1, 2, y, 3.

ree










Ahora tenemos el mismo modelo, pero solo dos columnas de cantidad.

ree









Vamos a llevarlo a Power Query.


Queremos quitar las columnas cuya cantidad1 y cantidad2 sean iguales.


Vamos a crear una columna personalizada.


Vamos a usar la función List.RemoveMatchingItems, esta función quita las repeticiones de lista1 que coincida con lista2, además, tiene un argumento opcional que es equationCriteria, donde podemos especificar un valor opcional para controlar la igualdad de las pruebas.


Sintaxis

List.RemoveMatchingItems(list1 as list, list2 as list, optional equationCriteria as any) as list


En la Ventana de formula, ponemos la función y abrimos un paréntesis.


Como argumento lista1, entre llaves seleccionamos la columna cantidad1 y cerramos las llaves.


Como argumento lista2, entre llaves seleccionamos la columna cantidad2, y, cerramos las llaves.


Cerramos paréntesis.

ree













Aceptamos.


Tenemos una columna nueva con listas.

ree






Si hacemos clic en una lista donde los dos números son iguales, vemos en la parte inferior que no aparece nada.

ree






Si hacemos en una lista donde los números no son iguales, aparece el valor.


Queremos quedarnos con las columnas cuya cantidad1 y cantidad2 no sean iguales, primero vamos a hacer clic en expandir, y, seleccionamos expandir en nuevas filas.

ree






Desplegamos el filtro de la columna personalizado, y, desmarcamos nulo.

ree











Aceptamos, y, ya lo tenemos.


Miguel Angel Franco Garcia

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page