top of page

Personas y horas por role

Debemos de crear un modelo a partir del modelo, donde las horas son la suma de un determinado rol.


El modelo es el siguiente:


















Por ejemplo, el código 1, como desarrollador, le pertenece las personas A, C, y, D, y, la suma de las horas es de 199.




Empecemos…


En la celda F2, nos traemos los valores únicos de la columna código.


=UNICOS(A2:A16)













En la celda G2, abrimos un paréntesis, seleccionamos el rango A2:A16 e igualamos a F2, cerramos paréntesis, ponemos el símbolo de asterisco, abrimos otro paréntesis, para la segunda pregunta, seleccionamos el rango C2:C16 e igualamos entre comillas dobles a Desarrollador, cerramos paréntesis.


Obtenemos una matriz desbordada en vertical con 1 donde hay coincidencia, y, 0 donde no hay coincidencia.

















Después del signo igual, ponemos el condicional SI, como argumento prueba lógica, son las dos preguntas anteriores, como argumento valor si verdadero, usamos APILARH, como argumento matriz1, seleccionamos el rango B2:B16, como argumento matriz2, seleccionamos el rango D2:D16, como argumento valor si falso, ponemos un error.


Obtenemos una matriz desbordada de dos columnas, en la primera columna, tenemos las personas donde hay coincidencia, y, error donde no hay coincidencia, en la segunda columna, tenemos las horas donde hay coincidencia, y, error donde no hay coincidencia.


Después del signo igual, ponemos LET, creamos una variable, la llamamos modelo, como valor es la expresión anterior.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Desarrollador");APILARH(B2:B16;D2:D16);NOD())


Creamos otra variable, la llamamos letras, usamos la función INDICE, como argumento matriz, ponemos la variable modelo, ignoramos el argumento numero de fila, como argumento numero de columna, ponemos 1.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Desarrollador");APILARH(B2:B16;D2:D16);NOD());letras;INDICE(modelo;;1);letras)


Obtenemos una matriz desbordada con las personas donde hay coincidencia, y, error donde no la hay.




















Usamos ENCOL e ignoramos blancos, y, errores.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Desarrollador");APILARH(B2:B16;D2:D16);NOD());letras;ENCOL(INDICE(modelo;;1);3);letras)


Usamos UNIRCADENAS, como argumento delimitador, entre comillas dobles, ponemos coma, ignoramos celdas vacías, como argumento texto1, es la expresión anterior.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Desarrollador");APILARH(B2:B16;D2:D16);NOD());letras;UNIRCADENAS(",";VERDADERO;ENCOL(INDICE(modelo;;1);3));letras)


Arrastramos, y, ya tenemos las personas.










Obtenemos error donde no hay valores que mostrar, pero, eso lo dejaremos para el final.


Creamos otra variable, la llamamos valores, volvemos a usar INDICE, como argumento matriz, es la variable modelo, ignoramos el argumento número de fila, como argumento número de columna, ponemos 2.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Desarrollador");APILARH(B2:B16;D2:D16);NOD());letras;UNIRCADENAS(",";VERDADERO;ENCOL(INDICE(modelo;;1);3));valores;INDICE(modelo;;2);valores)


Obtenemos los valores donde hay coincidencia, y, error donde no la hay.

















Usamos ENFILA, e, ignoramos blancos, y, errores.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Desarrollador");APILARH(B2:B16;D2:D16);NOD());letras;UNIRCADENAS(",";VERDADERO;ENCOL(INDICE(modelo;;1);3));valores;ENFILA(INDICE(modelo;;2);3);valores)


Sumamos los valores.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Desarrollador");APILARH(B2:B16;D2:D16);NOD());letras;UNIRCADENAS(",";VERDADERO;ENCOL(INDICE(modelo;;1);3));valores;SUMA(ENFILA(INDICE(modelo;;2);3));valores)


Usamos el argumento calculo de LET, ponemos APILARH, como argumento matriz1, ponemos la variable letras, como argumento matriz2, ponemos la variable valores.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Desarrollador");APILARH(B2:B16;D2:D16);NOD());letras;UNIRCADENAS(",";VERDADERO;ENCOL(INDICE(modelo;;1);3));valores;SUMA(ENFILA(INDICE(modelo;;2);3));APILARH(letras;valores))


Arrastramos, y, tenemos las personas y horas para desarrollador, y, error donde no hay datos que mostrar.








Antes de APILARH, ponemos la función SI.ERROR, donde ponemos un texto en blanco si la expresión devuelve un error.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Desarrollador");APILARH(B2:B16;D2:D16);NOD());letras;UNIRCADENAS(",";VERDADERO;ENCOL(INDICE(modelo;;1);3));valores;SUMA(ENFILA(INDICE(modelo;;2);3));SI.ERROR(APILARH(letras;valores);""))


Copiamos la expresión, excepto el signo igual, vamos a la celda I2, ponemos el signo igual, y, pegamos la expresión, cambiamos desarrollador por texteo.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Testeo");APILARH(B2:B16;D2:D16);NOD());letras;UNIRCADENAS(",";VERDADERO;ENCOL(INDICE(modelo;;1);3));valores;SUMA(ENFILA(INDICE(modelo;;2);3));SI.ERROR(APILARH(letras;valores);""))


Arrastramos.


Hacemos lo mismo en la celda K2, cambiando testeo por Pruebas.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Pruebas");APILARH(B2:B16;D2:D16);NOD());letras;UNIRCADENAS(",";VERDADERO;ENCOL(INDICE(modelo;;1);3));valores;SUMA(ENFILA(INDICE(modelo;;2);3));SI.ERROR(APILARH(letras;valores);""))


Lo mismo para hacemos en la celda M2.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Ventas");APILARH(B2:B16;D2:D16);NOD());letras;UNIRCADENAS(",";VERDADERO;ENCOL(INDICE(modelo;;1);3));valores;SUMA(ENFILA(INDICE(modelo;;2);3));SI.ERROR(APILARH(letras;valores);""))


Lo mismo en la celda O2.


=LET(modelo;SI((A2:A16=F2)*(C2:C16="Devoluciones");APILARH(B2:B16;D2:D16);NOD());letras;UNIRCADENAS(",";VERDADERO;ENCOL(INDICE(modelo;;1);3));valores;SUMA(ENFILA(INDICE(modelo;;2);3));SI.ERROR(APILARH(letras;valores);""))


Ya tenemos nuestro ejercicio resuelto.








Miguel Angel Franco



 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page