top of page
Foto del escritorJaime Franco Jimenez

Tiempo total en horas empleados

Tenemos una hora de comienzo, y, de fin, en horizontal tenemos los días de la semana, y, el empleado que ha trabajado en un día de la semana, y, las horas invertidas.

Debemos encontrar el tiempo total en horas empleadas por varias personas.


En la celda J2, usamos LET, creamos una variable, usamos la funcion ENCOL, como argumento matriz, seleccionamos el rango B3:H6.


=LET(a;ENCOL(B3:H6);a)

 

Tenemos una matriz desbordada en vertical con cada empleado, y, blanco, o, cero donde no hay empleado.

Usamos el argumento calculo de LET, usamos la funcion FILTRAR, como argumento matriz ponemos la variable “a”, como argumento Include, ponemos la variable “a” y comparamos con distinto a blanco.


=LET(a;ENCOL(B3:H6);FILTRAR(a;a<>""))

 

Nos quedamos con los valores únicos.


=LET(a;ENCOL(B3:H6);UNICOS(FILTRAR(a;a<>"")))


Tenemos los empleados únicos.

En la celda K3, usamos LET, creamos una variable, usamos el condicional SI, como argumento prueba lógica, preguntamos si el rango B3:H6 es igual a la celda J3, que es el primer nombre (Bill), como argumento valor si verdadero, seleccionamos el rango A3:A6, que son las horas, como argumento valor si falso, ponemos un error.


=LET(a;SI(B3:H6=J3;A3:A6;NOD());a)

 

Tenemos una matriz desbordada de siete columnas, donde tenemos la hora donde hay coincidencia, y, error donde no hay coincidencia.

Antes del condicional SI, usamos la funcion ENCOL, como argumento matriz es el condicional SI, como argumento ignorar, seleccionamos 3, ignorar blancos y errores.


=LET(a;ENCOL(SI(B3:H6=J3;A3:A6;NOD());3);a)

 

Tenemos las horas en vertical correspondiente al empleado Bill.

Usamos el argumento calculo de LET, usamos la funcion DERECHA, como argumento texto, ponemos la variable “a”, como argumento número de caracteres, ponemos 5, para extraer la hora de finalización, y, multiplicamos por 1 para que el resultado nos lo de en formato de número.


=LET(a;ENCOL(SI(B3:H6=J3;A3:A6;NOD());3);DERECHA(a;5)*1)

Ponemos el signo de resta, ponemos la funcion IZQUIERDA, como argumento texto, ponemos la variable “a”, como argumento numero de caracteres ponemos 5, y, multiplicamos por 1, vamos a obtener la hora de comienzo.


=LET(a;ENCOL(SI(B3:H6=J3;A3:A6;NOD());3);DERECHA(a;5)*1-IZQUIERDA(a;5)*1)

 

Tenemos la resta de las horas para el empleado Bill.

Encerramos la expresión entre paréntesis, y, multiplicamos por 24 para que el resultado nos lo devuelva en horas.


=LET(a;ENCOL(SI(B3:H6=J3;A3:A6;NOD());3);(DERECHA(a;5)*1-IZQUIERDA(a;5)*1)*24)

 

Sumamos los resultados.


=LET(a;ENCOL(SI(B3:H6=J3;A3:A6;NOD());3);SUMA((DERECHA(a;5)*1-IZQUIERDA(a;5)*1)*24))

 

Tenemos las horas para el empleado Bill.

Vamos a convertirla en matricial, para ello, después del signo igual ponemos la funcion BYROW, como argumento array, seleccionamos la celda J3 junto con el operador de rango derramado (#), como argumento funcion, ponemos LAMBDA, y, declaramos una variable.


=BYROW(j3#;LAMBDA(x

 

Como argumento calculo, es la funcion LET, pero, cambiamos J3 por la variable creada.


=BYROW(J3#;LAMBDA(x;LET(a;ENCOL(SI(B3:H6=x;A3:A6;NOD());3);SUMA((DERECHA(a;5)*1-IZQUIERDA(a;5)*1)*24))))

 

Aceptamos, y, ya lo tenemos.



Miguel Angel Franco

2 visualizaciones0 comentarios

Comments


bottom of page