
Tengo 550 filas de datos que representan tiempos de vuelo diarios. Cada vuelo, dependiendo del tipo de avión, requiere que asistan un cierto número de personas. Esa tarea lleva 45 minutos. Entonces, a cualquier hora de vuelo determinada, habrá personas ocupadas con ese vuelo más cualquier vuelo dentro de los 45 minutos anteriores. Quiero obtener un recuento agregado del total de personas necesarias en cualquier momento del vuelo. También quiero tratar los 45 minutos como una variable de entrada para ver cómo los cambios en el tiempo de esta tarea afectan la demanda de mano de obra en cada horario de vuelo.
Aquí hay una maqueta de cómo se ven los datos:
A B C. D
1 2:30 4 0:45 4
2 2:45 3. 7
3 3:15 2. 9
4 3:30 4. 9
5 3:35 5. 11
La columna A contiene los tiempos de vuelo. La columna B contiene el número de personas necesarias para ese vuelo. La celda C1 contiene el valor del tiempo de la tarea. Quiero completar la columna D con el recuento total de personal requerido en cada horario de vuelo. El ejemplo se muestra con los resultados completados.
Un cálculo de muestra se vería así. Utilice la fila 4 como ejemplo. El tiempo de vuelo es las 3:30. Según un tiempo de tarea de 45 minutos, todos los vuelos a partir de las 2:45 o después requerirían personas activas al mismo tiempo. Hay tres vuelos de este tipo, 2:45, 3:15 y 3:30. La dotación de personal de la columna B para esos vuelos es 3, 2 y 4, por lo que el total de personal requerido al momento del vuelo de las 3:30 es 9. Eso es lo que va en D4.
Si cambiara el tiempo de la tarea en C1 a 30 minutos, solo calificarían los vuelos de las 3:15 y 3:30, por lo que el total en D4 sería 6.
Lo he probado SUMIF
y SUMIFS
. Agregué una fila con los datos (tiempo) menos y C1
luego intenté sumar todo lo que se encontraba B
entre ese rango de tiempo. Parece que no puedo obtener la B
columna para agregar los datos.
Lo intenté
=sumif(A:A,"<=A4",B:B)-sumif(A:A,"<=A4-C1",B:B)
Respuesta1
Aquí hay una solución. Esta es la fórmula para D1. Ingréselo y luego cópielo para otras celdas en D:
=SUM(INDIRECT("b"&IF(ISNA(MATCH(A1-C$1,A$1:A1,0)),IF(ISNA(MATCH(A1-C$1,A$1:A1,1)),1,MATCH(A1-C$1,A$1:A1,1)+1),MATCH(A1-C$1,A$1:A1,0))):B1)
Esta es básicamente la lógica. Encuentra la primera fila que cumple con sus criterios y luego suma los valores en B entre allí y la fila actual. La forma en que encuentra la primera fila es usando la función COINCIDIR para comparar el tiempo en la columna A menos el tiempo en C1 con los valores de tiempo en las filas hasta la fila actual inclusive. MATCH no tiene una búsqueda GE para valores en orden ascendente, por lo que utiliza una combinación de LE y EQ.
- Si no hay nada LT, eso significa que la fila 1 es GE, por lo que esa es la primera fila.
- Si una fila es EQ, esa es la fila inicial.
- Si una fila es LE pero no EQ, eso significa que la siguiente fila es el primer GE, por lo que esa es la primera fila.