Excel realiza asignaciones mediante fórmulas o VBA según condiciones.
Sub Cal_Click()
Tiempo de atenuación doble
Dim initj es un número entero
Para i = 5 a 20 pasos 1< / p>
Si Len(Hoja2. Celdas(i, 1)) = 0 o Len(Hoja2. Celdas(i, 2)) = 0
Salir para...
Terminará si...
Horas = Hoja de trabajo 2. Celda(I,2)
initj = Hoja2. Celda (I, 1) - 1
Tiempo de trabajo gt "0" iterar a través de las columnas
Para j = 1 a 5 pasos 1
La columna atenuada es una entero
Dim sumcolum es Doble
col = initj * 5 2 j
sumcolum = 0
Para k = 5 a i - 1 Paso 1
sumcolum = sumacolum Hoja2. celda(k,columna)
siguiente k
si sumacolum lt hoja de trabajo 2. celdas(4,columna) y luego
Hoja2. celda(I,col) = aplicación. min(hoja2.celda(4columnas)-sumacolumna,horas)
horas = horas-hoja2. Celda (primera columna)
Finalizar si...
Si horas lt= 0, entonces salir
Siguiente j
initj = initj 1
Si Len(Hoja2. Celdas(4, initj * 5 2)) = 0, entonces salga
MsgBox (initj)
Bucle p>
Siguiente I
Conector final
Los resultados finales de la ejecución son los siguientes: