Ya he mencionado que mi abuelita solía decir que cuando tenemos un martillo todo problema se parece a un clavo. Power Query es mi "martillo" a la hora de resolver un problema de transformación de datos en Excel.
El "clavo" de turno era crear un calendario, similar al del post anterior, pero con horas. Es decir un fila para cada hora de cada día. En lugar de 365 o 366 filas, 8760 o 8784 si el año es bisiesto.
El método es similar al del post mencionado pero con ciertos cambios. Como queremos que nuestra solución sea dinámica, empezamos por definir un conexión a una celda donde ponemos el año para el cual queremos crear el calendario
Esta consulta la guardamos como "solo conexión" (ver el post anterior). El código es
Sugerencias y ayuda para Excel en español. Ejemplos de funciones y fórmulas, gráficos, automatización con Vba, Power Query y PowerPivot
jueves, febrero 27, 2020
martes, febrero 25, 2020
Crear un calendario con Power Query
Supongamos que queremos crear un calendario con Power Query (¿por qué queríamos hacer semejante cosa? Bien, hay varios motivos pero no son el tema de este post).
Aparentemente la tarea es bien sencilla. Power Query tiene un "atajo" para crear Listas: {x..y} donde x e y son números enteros. Como sabemos, las fechas están representadas por números enteros de manera que si sabemos que el 01/01/2020 es el número 43831 y el 44196 el 31/12/2020, hacemos lo siguiente:
1 - abrimos una consulta en blanco
2 - en la barra de las fórmulas escribimos ={43831..44196} lo cual crea un serie aritmética de razón 1
Aparentemente la tarea es bien sencilla. Power Query tiene un "atajo" para crear Listas: {x..y} donde x e y son números enteros. Como sabemos, las fechas están representadas por números enteros de manera que si sabemos que el 01/01/2020 es el número 43831 y el 44196 el 31/12/2020, hacemos lo siguiente:
1 - abrimos una consulta en blanco
2 - en la barra de las fórmulas escribimos ={43831..44196} lo cual crea un serie aritmética de razón 1
martes, febrero 18, 2020
Clasificación (ranking) ordinal con desempate aleatorio
En mi post anterior sobre clasificación (ranking) con Excel y con Power Query mostré un método de desempate basado en un "sorteo", es decir, asignar a cada miembro de la lista un número aleatorio y determinar la posición en caso de empate de acuerdo a ese número.
Como vimos, si usamos la función Number.Random de Power Query todas las filas de la tabla reciben el mismo número.
Buscando en la Internet dí con esta discusión donde se muestran algunas soluciones (aunque la única que funcionó con mi ejemplo fue a basada en List.Random).
Debo confesar que no entiendo cabalmente la solución propuesta que muestro en el post. Esto me produjo un sentimiento de incomodidad que me llevó a buscar mi propia solución.
Recordemos el problema a solucionar:
Como vimos, si usamos la función Number.Random de Power Query todas las filas de la tabla reciben el mismo número.
Buscando en la Internet dí con esta discusión donde se muestran algunas soluciones (aunque la única que funcionó con mi ejemplo fue a basada en List.Random).
Debo confesar que no entiendo cabalmente la solución propuesta que muestro en el post. Esto me produjo un sentimiento de incomodidad que me llevó a buscar mi propia solución.
Recordemos el problema a solucionar:
- tenemos un a lista de calificaciones de alumno;
- queremos ordenarla por calificación, de mayor a menor;
- en caso de "empate" (dos o más alumnos con la misma calificación), realizamos un sorteo para determinar la posición relativa de los "empatados";
- el sorteo lo hacemos calculando un número aleatorio para cada alumno. Luego ordenamos los empates de acuerdo al número aleatorio que recibió cada alumno.
La solución que desarrollé esta basada en la función Number.Random y en un "truco": combinar la consulta consigo misma.
Estos son los pasos aplicados partiendo de esta tabla de datos:
Suscribirse a:
Entradas (Atom)