¿Como puedo ajustar este código?
He hecho este código
Private Sub cmdcalc_Click() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim Ncond_Ini As Range Dim Vitem_Ini As Range Dim Vins_Ini As Range Dim Evn_Ini As Range Set Ncond_Ini = Range("A4") Set Vitem_Ini = Range("T3") Set Vins_Ini = Range("E4") Set Evn_Ini = Range("A4") ' Ncond = Ncond_Ini.Value Vitem = Vitem_Ini.Value Vins = Vins_Ini.Value Evn = Evn_Ini.Select Set h = ActiveSheet ' For i = 4 To h.Range("A" & Rows.Count).End(xlUp).Row 'Se inicia desde la fila 4 y se va hasta la última fila con datos If Ncond <> 1 Then 'Ncond siempre será un dato de la Columna A y si este dato es diferente de 1... Evn = ActiveCell.Offset(0, 18).Select 'Se ira a la Columna S y hará una pegara el resultado de una multiplicacion Resl = Vins * Vitem 'Acá se multiplican las variables cuyos datos se extraen de las columnas E y T respectivamente ActiveCell = Resl ' En toda esta sección se actualizan la variables para hacer el mismo proceso anterior con la fila siguiente Set Ncond_Ini = Ncond_Ini.Offset(1, 0) Set Vins_Ini = Vins_Ini.Offset(1, 0) Set Evn_Ini = Evn_Ini.Offset(1, 0) Ncond = Ncond_Ini.Value Vitem = Vitem_Ini.Value Vins = Vins_Ini.Value Evn = Evn_Ini.Select Else 'Si el valor de la columna A es 1 solo se actualizan los datos para hacer el mismo proceso con la fila siguiente Set Ncond_Ini = Ncond_Ini.Offset(1, 0) 'Set Vitem_Ini = Vitem_Ini.Offset(1, 0) Range("T27").Select 'Esta linea y la siguiente son las que debo modificar Selection.End(xlDown).Select Set Vins_Ini = Vins_Ini.Offset(1, 0) Set Evn_Ini = Evn_Ini.Offset(1, 0) Ncond = Ncond_Ini.Value Vitem = Vitem_Ini.Value Vins = Vins_Ini.Value Evn = Evn_Ini.Select End If Next i Application.ScreenUpdating = True Application.DisplayAlerts = True
La razón por la que debo corregir las lineas que mencione en el código es que cada vez que el valor de la Columna "A" sea 1 se debe hacer la función equivalente a Ctrl + Flecha abajo para que los Vins se multipliquen con el Vitem que les corresponde, tratare de explicarme con las siguiente imagen
La idea que los datos de la Columna E se multipliquen por los de la columna T, si se fijan en la columna V les muestro el resultado esperado, y en la columna X una formula con la que les ejemplifico como es la multiplicación. Entonces en la imagen podrán ver que si A4 es diferente de 1, E4 se multiplicara con T3 y así hasta llegar a A8 (en este caso) ya que A9 (aunque no se vea) es 1, por lo cual debe hacer caso omiso y seguir a A10 con el cual se hará la misma formula solo que está vez en caso de que se cumpla la condición se multiplicara con T9 y así sucesivamente (adjunto el archivo para que ustedes mismos vean como trabaja) Este es el archivo
El problema es que como tengo planteada las 2 lineas problemas siempre se trabajara con T9. Espero lograr transmitir mi problema con claridad, en caso de que necesiten más claridad tratare de dárselas.
Nota: Cuando en la Columna A aparece un 1, inmediatamente se debe pasar a multiplicar con el siguiente, pues como verán en la siguiente imagen cuando hay un 1 en la Columna A, aparece un nuevo valor en la Columna T
Nota 2: En el archivo que adjunte verán 2 hojas, una en la que ya corrí la macro (Esta hoja se llama Inf) y les muestro el resultado de la macro(El resultado es el de la Columna S en las celdas pintadas) y les muestro el resultado esperado (Que es el de la Columna V (Este resultado esperado lo hice con la formula, la cuál también les puede ayudar para tener mejor claridad)). Y la hoja 2 (llamada Inf (Limpia) es para que ustedes mismo ejecuten la macro con el Botón que allí se ve.