Ir al contenido principal

Calcular horas trabajadas entre dos fechas en Excel

 

Es muy fácil obtener los días laborables en Excel pero en más de una ocasión necesitarás calcular las horas trabajadas entre dos fechas y no existe una función en Excel que pueda hacer eso de manera automática.

Seguramente encontrarás muchas alternativas para resolver este problema, pero la alternativa que yo utilizo implica el uso de la función DIAS.LAB que será de gran ayuda en este cálculo. La solución supone que tenemos los siguientes datos en nuestra hoja:


calcular-horas-laborables-entre-dos-fechas-en-excel-01

En primer lugar tenemos el Horario laboral que indica la hora de entrada y la hora de salida que tomaremos en cuenta para nuestro cálculo. En segundo lugar tenemos dos celdas que contienen una fecha y una hora indicando la fecha de inicio y la fecha final del cálculo.

De esta manera, en nuestro ejemplo, calcularemos las horas trabajadas entre el 08 de noviembre a las 8:15 y el 14 de noviembre a las 18:25 considerando un horario de trabajo de 8:00 a 18:00 horas.

Es importante mencionar que al no tener el horario trabajado para los días intermedios, consideraremos un horario de trabajo completo, es decir, desde las 8:00 y hasta las 18:00 horas. Por ejemplo, para el día 09 de noviembre consideraremos 10 horas de trabajo.

Obtener los días laborables

El primer paso será obtener los días laborables con un horario completo entre ambas fechas. Este cálculo lo haremos con la función DIAS.LAB de la siguiente manera:

Formula en español 
=DIAS.LAB(B5, B6) - 2

Formula en ingles 
 =NETWORKDAYS(B5, B6) - 2

La función DIAS.LAB calcula los días laborables entre ambas fechas, que en este caso son 5, pero hago una resta de 2 porque deseo excluir los extremos ya que para esos días haré un cálculo especial.

Una vez que tengo los días laborables puedo obtener las horas fácilmente haciendo una multiplicación por las horas totales en el horario laboral:
 

Formula en español
=(DIAS.LAB(B5,B6) - 2) * (B3-B2)

Formula en ingles
=(NETWORKDAYS(B5,B6) - 2) * (B3-B2)

Esta fórmula nos da el total de las horas trabajadas en los días laborables que se encuentran entre la fecha  de inicio y la fecha final. Observa lo que sucede si aplico esta fórmula en los datos de nuestra hoja:

calcular-horas-laborables-entre-dos-fechas-en-excel-02

La celda D8 muestra un total de 30 horas que es el total de horas laborables de 3 días. Es importante mencionar que la celda tiene el formato personalizado [hh]:mm el cual nos permite mostrar el total de horas tal como lo observas en la imagen anterior.

Aún no llegamos al resultado final porque todavía nos falta sumar las horas trabajadas durante el día inicial y también sumar las horas de la fecha final.

Calcular las horas trabajadas al inicio

Ya que para el día inicial tenemos la hora exacta en que se comienza a trabajar haremos un cálculo diferente. Para obtener las horas trabajadas en el día inicial utilizaré la siguiente fórmula:

=B3 - RESIDUO(B5,1)
=B3 - MOD(B5,1)

Para poder explicar lo que hace la función RESIDUO debemos recordar que las fechas en Excel son números. Al aplicar esta función a la fecha de inicio obtendré solamente las horas de manera que pueda hacer una resta con la celda B3 la cual está indicada también en horas.

El resultado de esta fórmula es 09:45 que son las horas trabajadas durante el primer día y es un número que deseo sumar a la fórmula que habíamos comenzado a elaborar:

=(DIAS.LAB(B5,B6) - 2) * (B3-B2) + B3 - RESIDUO(B5,1)
=(NETWORKDAYS(B5,B6) - 2) * (B3-B2) + B3 - MOD(B5,1)

Observa el resultado de aplicar esta fórmula a nuestros datos:


calcular-horas-laborables-entre-dos-fechas-en-excel-03

Calcular las horas trabajadas al final

Por último calcularemos las horas trabajadas en el día final y de igual manera utilizaré la función RESIDUO para obtener las horas:

=RESIDUO(B6,1) - B2
=MOD(B6,1) - B2

Esta fórmula considera los 25 minutos excedentes en el día final por lo que el resultado es de 10:25 horas. Solo resta sumar este resultado a nuestra fórmula principal:

=(DIAS.LAB(B5,B6) - 2) * (B3-B2) + B3 - RESIDUO(B5,1) + RESIDUO(B6,1) - B2
=(NETWORKDAYS(B5,B6) - 2) * (B3-B2) + B3 - MOD(B5,1) + MOD(B6,1) - B2

Con esta fórmula podemos entonces calcular el total de horas trabajadas entre dos fechas tomando en cuenta las horas de la fecha inicial y final. Observa el resultado:

calcular-horas-laborables-entre-dos-fechas-en-excel-04

Tips adicionales

En el resultado final he dejado los minutos, pero es posible hacer un redondeo para tener una cantidad exacta de horas. Para tener más información sobre cómo redondear las horas consulta el siguiente artículo: Cómo redondear horas en Excel.

La función DIAS.LAB considera, de manera predeterminada, los días sábado y domingo como el descanso semanal pero podríamos utilizar la función DIAS.LAB.INTL en caso de tener algún día de descanso diferente. Además, con cualquiera de las dos funciones puedes tener una lista de días festivos que desees omitir del cálculo. Para saber más sobre dicha funcionalidad consulta el detalle para cada función:

FUENTE: http://exceltotal.com/calcular-horas-trabajadas-entre-dos-fechas-en-excel/

Comentarios

RobertLokit ha dicho que…
Este comentario ha sido eliminado por el autor.
RobertLokit ha dicho que…
Este comentario ha sido eliminado por el autor.

Entradas populares de este blog

Get SharePoint Online Site and SubSites permission using PowerShell

The below PowerShell script retrieves the following for the given SharePoint Online Site All the Sub-site's URL Security group attached with each Sub-site with their permission level Prerequisites: This PowerShell script uses the latest version of SharePoint Online PnP Module. Download the installer from https://github.com/SharePoint/PnP-PowerShell/releases  Install-Module SharePointPnPPowerShellOnline  Install-Module - Name ' SharePointPnP.PowerShell.Commands.Files.Recurse ' function  connect - site( $webs , $creds ){    Connect - PNPonline  - Url  $webs   - Credentials  $cred     }    function  get - sitepermission( $web , $cred ){    $rec =@()    connect - site  - webs  $web   - creds  $cred     if ( $web   - eq  $parentsitename )  {  #Write-Host "Parent site permission" $web   $Pgroups =Get - PNPGroup  foreach ( $Pgroup   in   $Pgroups )  {  $DLGP  =  ""   |   Select   "SiteUrl" , "GroupName" , "Permiss

Find and Delete Orphaned Users in SharePoint

Fuente: http://www.sharepointdiary.com/2012/09/find-and-delete-orphaned-users-in-sharepoint.html Orphaned User? Who are they? Orphaned users are those who have been disabled/removed from Active Directory, but still have permissions to sites, lists and items. Internally, SharePoint keeps them in " UserInfo " table of the content database for meta-data such as created/modified by fields. Its unavoidable in any organization where employees constantly on-boarding and off-boarding. Its really difficult to manage, when it comes to thousands of sub-sites, sites, libraries and lists with their own sets of permissions. Why we care about Orphaned users? It is a best practice to delete orphaned users to keep the farm clean & organized. Also this will solve the problem of deleted active directory users still appearing on the people picker which was discussed here  People Picker not showing users from Active Directory? . If you know the user base or criteria then you can use: Clea

Conexión desde casa a una VPN sin perder salida a internet

Solución, asumiendo que estas en Windows: Panel de Control, Conexiones de Red. Clic derecho en la VPN, dale a propiedades. Anda a la pestaña de "Funciones de Red" y selecciona Protocolo Internet TCP/IP y clic en el botón "Propiedades". Ahora hazle clic al botón "Opciones Avanzadas..."En la pestaña "General", desmarca la opción que dice "Usar la puerta de enlace predeterminada en la red remota". Dale a aceptar a todas las ventanitas de opción, y ahora conéctate a la VPN nuevamente. Con eso deberías entrar a la VPN sin perder la conexión local de tu red e internet.