Macro para poder realizar una fórmula

Nuevamente a todos, necesito poder crear una macro que me permita hacer lo siguiente:

Tratare de ser lo más claro posible.

En base a esta imagen necesito crear una macro que realice lo siguiente:

Que calcule las comisiones que están de la columna F a la I, utilizando los datos de la columna A a la columna E, esto lo estoy realizando con las siguientes fórmulas, las en listo de acuerdo a las columnas

(Columna F)    =SI(A10="Credito",(B10*$B$4/100),(SI(A10="Debito",(B10*$B$3/100))))

(Columna G)    =SI(A10="Debito",SI(F10>18,18,F10),"")

(Columna H)    =SI(A10="Credito",SI(C10=0,0,SI(C10=3,(B10*$E$3/100),SI(C10=6,(B10*$E$4/100),SI(C10=9,(B10*$E$5/100),SI(C10=12,(B10*$E$6/100),0))))),0)

(Columna I)    =SI(G10<>"",G10,(F10+H10))

Necesito poner en el código de la macros estas fórmulas para que se realice el calculo automático y también que se visualice el resultado en todos los renglones con información.

1 Respuesta

Respuesta
1

[Hola 

Te paso la macro

Esto resulta con la grabadora de macros

Sub Macro2()
'
' [Por Adriel
'
    With Range("F10:F21")
    .Value = "=IF(RC[-5]=""Credito"",(RC[-4]*R4C2/100),(IF(RC[-5]=""Debito"",(RC[-4]*R3C2/100))))"
    .Value = .Value
    End With
    '
    With Range("G10:H21")
    .Value = "=IF(RC[-6]=""Debito"",IF(RC[-1]>18,18,RC[-1]),"""")"
    .Value = .Value
    End With
    '
    With Range("H10:H21")
    .Value = _
    "=IF(RC[-7]=""Credito"",IF(RC[-5]=0,0,IF(RC[-5]= 3,(RC[-6]*R3C5/100),IF(RC[-5]=6,(RC[-6]*R4C5/100),IF(RC[-5]= 9,(RC[-6]*R5C5/100),IF(RC[-5]=12,(RC[-6]*R6C5/100),0))))),0)"
    .Value = .Value
    End With
'
    With Range("I10:I21")
    .Value = "=IF(RC[-2]<>"""",RC[-2],(RC[-3]+RC[-1]))"
    .Value = .Value
    End With
End Sub

Muchas Gracias Adriel, así es como lo buscaba ahora bien, quisiera preguntarte como hacer que el rango sea variable, ejemplo, en la imagen anterior solo aparece información hasta el renglón 21 sin embargo esa cantidad de registros puede variar a 50 o a 25 o bien a 250 o más.

También me gustaría redistribuir el contenido poniendo en una hoja diferente la información de los primeros 6 renglones más o menos de esta forma, en la hoja 1 estarían los campos de los primeros 6 renglones y en la hoja 2 estaría la información de los registros de ventas y comisiones.

De antemano Muchas Gracias.

Pon una imagen de ambas hojas y el resultado esperado

Aqui estan las imagenes.

Hoja 1 con los datos de tarifas y sobre tarifa crédito.

Hoja 2 con la información de los registros y los resultados deseados, ahora bien como lo comentaba en el mensaje anterior el número de registros puede variar por lo que quisiera que las fórmulas se apliquen a todos los registros de la hoja.

Muchas Gracias.

Envíame tu archivo para comprobar [email protected]

Listo ya te lo compartí.

Muchas Gracias

[Hola 

te paso la macro 

Sub Macro1()
'
' [Por Adriel Ortiz
Set h2 = Sheets("Hoja2")
h2.Range("E2:H" & Rows.Count).ClearContents
'
u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
'
With h2.Range("E2:E" & u2)
    .Value = "=IF(RC[-4]=Hoja1!R6C2,(RC[-3]*Hoja1!R6C3/100),(IF(RC[-4]=Hoja1!R5C2,(RC[-3]*Hoja1!R5C3/100),IF(RC>18,18))))"
    .Value = .Value
End With
'
With h2.Range("F2:F" & u2)
    .Value = "=IF(RC[-5]=Hoja1!R5C2,IF(RC[-1]>18,18,0),0)"
    .Value = .Value
End With
'
With h2.Range("G2:G" & u2)
    .Value = "=IF(RC[-6]=Hoja1!R6C2,IF(RC[-4]=0,"""",IF(RC[-4]=Hoja1!R5C5,(RC[-5]*Hoja1!R5C6/100),IF(RC[-4]=Hoja1!R6C5,(RC[-5]*Hoja1!R6C6/100),IF(RC[-4]=Hoja1!R7C5,(RC[-5]*Hoja1!R7C6/100),IF(RC[-4]=Hoja1!R8C5,(RC[-5]*Hoja1!R8C6/100),""""))))),"""")"
    .Value = .Value
End With
'
With h2.Range("H2:H" & u2)
    .Value = "=IF(RC[-2]=0,RC[-3],RC[-2])"
    .Value = .Value
End With
''
MsgBox "Fin"
End Sub

Valora la respuesta como *Excelente o bueno para finalizar saludos!

Te envié tu archivo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas