lunes, septiembre 18, 2017

Cálculo de horas trabajadas con Power Query

Cálculo de horas trabajadas es uno de los temas sobre los cuales recibo la mayor cantidad de consultas. Así que ha llegado el momento de ver cómo podemos realizar estos cálculos con Power Query.
Si ya hemos mostrada en varios posts como podemos calcular horas trabajadas, con y sin turnos, ¿por qué mostrar como hacerlo con Power Query? Por la misma razón por lo cual recomiendo a todo quien este dispuesto a escuchar:

  • porque las soluciones con Power Query suelen ser más robustas;
  • porque una vez que desarrollamos el modelo en Power Query no hace falta reescribir las fórmula y realizar los cálculos cada vez que que recibimos datos nuevos;
  • porque podemos combinar datos de varios cuadernos o varias hojas automáticamente y con facilidad;
  • porque Power Query es una de las herramientas centrales del "nuevo Excel" (Power Query, Power Pivot, Power BI).
Lista parcial :)

Y ahora, ¿cómo hacemos un cálculo de horas trabajadas con Power Query? En esta nota voy a mostrar un caso sencillo. Supongamos que recibimos de un trabajador (más adelante veremos cómo lo integramos con varios) una planilla semanal de horas trabajadas com ésta:

Tal como ya mostramos en posts anteriores, una cuestión a resolver es que a veces el turno termina al día siguiente del principio (en nuestro ejemplo el miércoles y el jueves). Ésto es crítico ya que no contamos con la fechas. La solución con fórmulas Excel es usar  RESIDUO (hay otras, pero ésta es la que recomiendo). Con Power Query vamos a hacerlo de otra manera.

Como toda solución en Power Query empezamos por crear una consulta a partir de la tabla de horas (para este ejemplo usaremos Excel 2016/365, pero funciona de la misma manera para Excel 2010/13) y visualizarla en el editor de consultas


Podemos ver que Power Query interpreta las horas como números decimales. Esto no debe sorprendernos ya que las fechas y horas son también en Excel números (enteros para las fechas y la parte decimal para las horas, minutos y segundos).
Por ahora no vamos a cambiar el tipo de datos. Para poder calcular las horas trabajadas creamos la columna "Horas Trabajadas" con esta fórmula

donde agregamos 1 (sumar un día) al valor de Salida cuando este es menor que el correspondiente de Entrada.


Ahora podemos eliminar las columnas Entrada y Salida, pero antes de cargar la consulta una hoja tenemos que cambiar el tipo de dato de la columna personalizada de "Cualquiera" a "Hora"



Agregamos la línea de Total con la función Suma a la tabla



y aplicamos el formato [hh]:mm


A partir de este momento cada vez que recibimos un reporte del trabajador todo lo que tenemos que hacer es reemplazar el reporte anterior en la carpeta y actualizar la consulta.

En el próximo post veremos como crear un reporte que combina los datos de varios trabajadores.


3 comentarios:

  1. Muchas gracias, muy interesante, además de que sea a nivel de más empleados ¿podrías considerar también a la jornada diaria restar los tiempos de comida?

    ResponderBorrar
  2. Justamente estoy escribiendo el post donde muestro como combinar datos de varios empleados. Agregaré tambien el tema del descuento de tiempos de comida. Espero poder publicarlo en los próximos días.

    ResponderBorrar
  3. Muy interesantes Post, gracias por el gran aporte

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.