Colección de citas famosas - Slogan de motivación - Excel realiza asignaciones mediante fórmulas o VBA según condiciones.

Excel realiza asignaciones mediante fórmulas o VBA según condiciones.

Escribí un programa vba que puede lograr la función que deseas. Independientemente de la solidez y escalabilidad, es posible que deba modificarlo usted mismo.

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

Siguiente I

Conector final

Los resultados finales de la ejecución son los siguientes: