Como hago una macro para calcular a un rango de celdas un porcentaje y ponerlo en otro rango de celdas

Necesito a partir de unos saldos poder calcular el 10% ó 20% ó no y poner su resultado en una columna distinta.

Había pensado en usar dos casillas de verificación que una vez clicadas se recogiera el resultado en esa columna nueva o se mantuviera a cero.

No se si me he explicado, supongo que no...

2 Respuestas

Respuesta
1

Si lo que tu quieres hacer es esto

'

Entonces crea la tabla, coloca 3 Checkboxs en tu hoja y dentro del modulo de tu hoja inserta el siguiente codigo

'

Private Sub CheckBox1_Click()
For i = 6 To 28
Set P = Cells(i, "F")
Set na = Cells(i, "G")
If CheckBox1.Value = True Then
    If i = 28 Then Exit Sub
        CheckBox2.Value = False
        CheckBox3.Value = False
        Cells(i, "F").Offset(0, 1).Value = P * 0
        Cells(i, "F").Offset(0, 6).Value = P
        Else
        Cells(i, "F").Offset(0, 1).Value = Empty
        Cells(i, "F").Offset(0, 6).Value = Empty
    End If
Next
End Sub
Private Sub CheckBox2_Click()
For i = 6 To 28
Set P = Cells(i, "F")
If CheckBox2.Value = True Then
    If i = 28 Then Exit Sub
        CheckBox1.Value = False
        CheckBox3.Value = False
        Cells(i, "F").Offset(0, 3).Value = P.Value * 10 / 100
        px = Cells(i, "F").Offset(0, 3).Value
        Cells(i, "F").Offset(0, 6).Value = P + px
        Else
        Cells(i, "F").Offset(0, 3).Value = Empty
        Cells(i, "F").Offset(0, 6).Value = Empty
    End If
Next
End Sub
Private Sub CheckBox3_Click()
For i = 6 To 28
Set P = Cells(i, "F")
If CheckBox3.Value = True Then
    If i = 28 Then Exit Sub
        CheckBox1.Value = False
        CheckBox2.Value = False
        Cells(i, "F").Offset(0, 5).Value = P.Value * 20 / 100
        px = Cells(i, "F").Offset(0, 5).Value
        Cells(i, "F").Offset(0, 6).Value = P + px
        Else
        Cells(i, "F").Offset(0, 5).Value = Empty
        Cells(i, "G").Offset(0, 5).Value = Empty
    End If
Next
End Sub

Lo hice desde la fila 6 hasta la 28 (como esta en la imagen) pero eso lo puedes poner en las filas que tu uses

Tabla le digo yo de forma bruta a seleccionar el rango en mi caso (F6:L27) y darle todos los bordes

Aclaro esto no sea cosa que pienses que necesitas insertar una tabla para que funcione je je

Respuesta
1

Se hace más entendible si colocas un ejemplo de lo que quieres

vale gracias intentare hacerme entender.

quiero que los valores de una columna dentro de un rango, por ejemplo "C5:C100", aparezcan en otra columna en rango por ejemplo: "D5:D100" cuando le cliquemos en una casilla de verificación, o cualquier otro objeto que me digáis. 

en el rango donde están los datos los mismos se les ha aplicado una formula de hallar porcentaje

por ejemplo: "=A5*5%" por si afectase en algo.

gracias de antemano

Aun no me queda claro asi que te planteo el siguiente ejemplo en la columna C estan los valores originales y 2 botones de opcion de porcentajes 10% y 20% cuando le des click a cualquiera de los dos te copiara los datos en la columna E y en la F te pondra el porcentaje señalado.

y esta es la macro, esta la pones en un modulo standard

Sub FORMULAR(PORCENTAJE As Single)
Range("C5").CurrentRegion.Copy: Range("E5").PasteSpecial
Range("E5").CurrentRegion.Columns(2).Formula = "=(E5)*" & PORCENTAJE
End Sub

y estas las pones en el modulo VBA de la hoja donde tengas los datos, los botones son Activex

Private Sub OptionButton1_Click()
PORCENTAJE = 0.1
FORMULAR (PORCENTAJE)
End Sub
Private Sub OptionButton2_Click()
PORCENTAJE = 0.2
FORMULAR (PORCENTAJE)
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas