Sumar varias opciones de un rango hasta obtener un limite

Solicito de su apoyo, tengo un rango determinado, contiene ciertos porcentajes y están determinados de acuerdo a unos cuartales establecidos, lo que necesito es alguna función o macro que me sume varias opciones de ese rango hasta que esa suma me de el 40% de esa lista. Anexo la imagen para que sea mas comprensible.

P.D. No son todas los registros de ese rango.

Muchísimas gracias por adelantado! Saludos!

2 respuestas

Respuesta
1

Se pueden crear 2 columnas auxiliares (en este ejemplo E y F) para comprobar el "acumulado" de cada columna y parar cuando llegue o sobrepase el 40%

Sería así:

Las fórmulas serían:

E2=A2        F2=B2

Y después

En E3:     =SI(B3="";"";SI(F3>0,4;"";A3+E2))     en F3:    =SI(B3="";"";SI(B3+F2>0,4;"";B3+F2))

Y arrastrar ambas columnas hasta el final del rango.

Luego para las sumas:

=SUMA(A2:A20)  para la columna A,    =SUMA(B2:B20)  para la B

Y en las E y F sería con la fórmula = MAX y el rango.

Prueba y me dices, o amplía información.

Podría enviarte el archivo a algún correo para determinar como funcionan las fórmulas, veo que solo estas considerando los BAJOS, necesitaría que tomara en cuenta los otros dos criterios también.

Muchísimas gracias!

Sí.

Me lo puedes dejar aquí: [email protected]

Avísame cuando lo hayas enviado.

Respuesta
1

, por cierto la macro es dinámica sin importar cuantos datos quites o añadas la macro trabaj solo con los que queden.

Sub calcula_porcentajae()
Set datos = Range("a1").CurrentRegion
With datos
    .Interior.ColorIndex = xlNone
    r = .Rows.Count
    For i = 2 To r
        porcentaje = .Cells(i, 2)
        valida = i = 1
        valida2 = i > 1
        If valida Then suma = porcentaje
        If valida2 Then suma = porcentaje + suma
        limite = suma >= 0.4
        If limite Then
            .Rows(2).Resize(i).Interior.ColorIndex = 4
            Exit For
        End If
    Next i
    Range("e1") = suma
    Set datos = Nothing
End With
End Sub
Sub suma_azar()
Set datos = Range("a1").CurrentRegion
With datos
    .Interior.ColorIndex = xlNone
    r = .Rows.Count
    For i = 2 To r
otro:
        aleatorio = WorksheetFunction.RandBetween(2, r)
        porcentaje = .Cells(aleatorio, 2)
        xcolor = .Cells(aleatorio, 2).Interior.ColorIndex
        vcolor = xcolor = 4
        If vcolor Then GoTo otro
        valida = i = 2
        valida2 = i > 2
        If valida Then suma = porcentaje
        If valida2 Then suma = porcentaje + suma
        .Cells(aleatorio, 2).Interior.ColorIndex = 4
        If limite Then Exit For
        limite = suma >= 0.4
    Next i
    Range("e1") = suma
End With
set datos=nothing
End Sub

Podría enviarte el archivo a algún correo para poder determinar como funciona la macro? muchas gracias!

Pon tus datos en una hoja partiendo de la celda A1, luego copias la macro a un modulo standard y la ejecutas, con eso te darás cuenta si las macros te sirven o no, la otra sube el archivo a una página como mediafire o googledrive y pegas el enlace aquí.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas