Problema con fórmula = Si() y rango de comparación

Tengo un problemilla que no sé muy bien cómo puedo solucionar. Paso a explicarlo:

Estoy confeccionando una hoja de cálculo para controlar el horario de trabajo mensual.

Las filas de la Uno a la 6, las he utilizado para poner encabezados y títulos. Desde la 7ª a la 37, las he usado para los días del mes (en los meses de menos de 31 días, la/s última/s fila/s quedan, lógicamente en blanco)

La celda A38, tiene un valor fijo que es 08:00 (con formato hora hh:mm) y que es el que corresponde a las horas que deben realizarse cada día.

En la primera columna, aparecen los días de la semana. En la segunda, los días con el número de día del mes (por ejemplo, Sábado, 01). En la tercera, cuarta, quinta y sexta, las horas de entrada y salida. La séptima es un combo basado en un rango de celdas llamado "Observaciones", en el que, entre otros valores, aparecen: "Día Libre", "Vacaciones", "Trabajo Fuera del Centro", "Festividad Local"...

Por último, en la octava columna, aparece el total de horas realizadas.

Como quiera que el horario nos lo dan mensual, contando sábados, domingos y festivos (es decir: 31 días del mes por 8 horas diarias = 248 horas a realizar...) y para no andar descontando los festivos que tiene cada mes, en cada una de las celdas de la octava columna he puesto la siguiente fórmula:

=SI(O(a7="Sábado";a7="domingo");$A$38;SI(observaciones=G7;$A$38;D7-C7+F7-E7))

Lo que pretendo es que, si el día del mes es sábado o domingo, en la columna que marca el total de horas hechas me aparezca 08:00 (hasta aquí sin problemas, lo hace bien). Ahora bien, si el día en el que estamos no es sábado ni domingo, lo que quiero es que excel compruebe si el valor introducido en el combo de la séptima columna coincide con alguno de los valores del rango observaciones. En caso de ser así, que asigne a la columna 8 el valor 08:00 y, de ser falso, le asigne el valor correspondiente a restar a las horas de salida las horas de entrada (D7 -que es la hora de salida por la mañana - menos C7 -hora de entrada por la mañana- más F7 -hora salida tardes- menos E7 -hora entrada tardes)

El problema es que, al decir Observaciones = G7, únicamente funciona si la selección del combobox es Día libre que es el primer valor que aparece en el rango "Observaciones", pero no con los demás. Una solución sería poner todos y cada uno de los valores del rango, de la siguiente manera:

=SI(O(a7="Sábado";a7="domingo");$A$38;SI(O(G7= "Día Libre"; G7 = "Vacaciones";...);$A$38;D7-C7+F7-E7))

Pero esto haría que la fórmula se alargase de una forma exagerada, ya que, en total, en ese rango hay quince valores y, además, la fórmula es más larga que la que aquí expongo, ya que tiene en cuenta otras incidencias, pero como el problema se produce solo en esta parte, para no complicar mucho más la comprensión de mi pregunta, he preferido dejar únicamente la parte que me da problemas.

La pregunta es: ¿Es posible indicar a excel que, si G7 toma cualquiera de los valores comprendidos en el rango Observaciones H7 tome el valor de 08:00 horas sin necesidad de recurrir a la solución que he propuesto arriba? (Lo he intentado con coincidir, pero me da error ya que si G7 no tiene ningún valor, no ejecuta la parte "falsa" de la fórmula:

=SI(O(a7="Sábado";a7="domingo");$A$38;SI(COINCIDIR(G7;observaciones;0);$A$38;D7-C7+F7-E7))

Si en G7 selecciono cualquier valor, funciona; pero si no es así (si G7 está vacío), aunque introduzca horas de entrada y salida en las celdas D7, C7, F7 y E7, la celda H7 muestra #N/A...)

1 respuesta

Respuesta
1

Probá con esta fórmula:

=SI(O(A7="Sábado";A7="domingo");$A$38;SI(ESERROR(BUSCARV(G7;Observaciones;1;FALSO));D7-C7+F7-E7;$A$38))

Si esto resuelve tu consulta no olvides valorarla, sino comenta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas