6 febrero, 2025

CALCULAR DÍAS LABORABLES CON POWER QUERY

Hola a todos,

Hoy os mostraré un código en lenguaje M que nos va a servir para obtener los días laborables entre dos fechas. Imaginad las siguientes fechas:

Por un lado tenemos las fechas de inicio y fin y por otro las fechas de días que son festivos y que no tendrémos que tener en cuenta en el cálculo de días laborables.

El siguiente paso es importar las tablas al editor de Query:

Y una vez que las tenemos, vamos a agregar una columna con los días calculados según nuestra función:

Esta es la función:

List.Count(
  List.Select(
    List.Difference(
      List.Dates([INICIO], Duration.Days([FIN] - [INICIO])+1, #duration(1, 0, 0, 0)),
      List.Transform(#"FESTIVIDADES"[FESTIVOS], Date.From)
    ), each Date.DayOfWeek(_, 1) < 5
  )
)

y aquí ya la tenemos en query en nuestra columna personalizada (DIAS LAB):

El resultado es el siguiente:

Y esto es todo, con esta consulta ya tenemos los días laborables entre las dos fechas, es decir, días entre el 0 y el 4, que no sean sábado ni domingo y descontando los días festivos (o si se quiere los de vacaciones).

Luego solo tenéis que exportarlo a vuestra hoja y ya tenéis la información.

Espero que sea de utilidad 🙂

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

9 comentarios en «CALCULAR DÍAS LABORABLES CON POWER QUERY»

  1. Hola, feliz día. Se observa que funciona de maravilla para formatos de «Fecha» pero y si el campo esta en formato «Fecha/Hora», ¿existe alguna manera de no dar error? Gracias.

    1. Lo único que tienes que hacer es en los primeros pasos pasar el formato a fecha. Esto lo haces cuando tienes la tabla de PQ y seleccionas pestaña Transformar > y en Fecha seleccionas Fecha. Para que extraiga solo la fecha.

      Es un paso intermedio antes de finalizar.

      O lo que es lo mismo en lenguaje M:

      = Table.TransformColumns(#"Tipo cambiado",{{"INICIO", DateTime.Date, type date}, {"FIN", DateTime.Date, type date}})

  2. Muy bueno y funciona de maravilla, lo único sería como podría aplicarlo para distintas festividades, como pueden ser los festivos de cada provincia de España al tener una tabla general de datos con todas las provincias y querer aplicar a cada provincia los que les corresponden.
    Agradecería sus comentarios.
    Un saludo y agradecerle sinceramente el reporte publicado, para nada es lento y funciona muy bien.

      1. Buenos días, sería posible algún tipo de ejemplo que me pudiera llevar a poder hacer el tipo de condición; ejemplo creo tablas con las festividades para cada provincia y las denomino por el nombre de la provincia (en lugar de crear una tabla general de «festividades»), ¿Cómo puedo llamar a la tabla que tiene las festividades de esa provincia? Yo por el código postal puedo saber siempre a qué provincia corresponde y que tabla tendría que llamar, el problema es que no sé como hacer la condición para decirle qué tabla de festividades debe coger para que pueda hacer el cálculo correcto.
        Sería tan amable de indicarme alguna condición que me permita poder elegir la tabla de festividades de la provincia correspondiente para poder hacer el cálculo ( yo en todo momento sabría que tabla debo elegir por el código postal, el problema es que no sé como condicional la tabla de festividades de su cálculo)
        Agradecerle tanto sus comentarios como su anterior contestación.
        Un saludo.

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies