Saltar al contenido

Sumar valores hasta que cumpla el 80% del total y decirme el último campo del último valor que sumó.


jomunozta

Recommended Posts

publicado

Hola a todos. 

necesito su ayuda para encontrar una fórmula que sume la columna "% cumplimiento"  hasta que el acumulado de la suma, sea el 80% del total de la columna, y me diga en qué día logró llegar a ese 80%. por ejemplo, el total del cumplimiento en este caso es 40%, el 80% del 40% es 32%, ese 32% se cumple llegando al 3° día. por lo que quiero me diga el valor del campo "días pasados", en este caso: 3

días pasados % cumplimiento
0 25%
1 6%
2 2%
3 2%
4 2%
5 1%
6 1%
7 1%
8 0%
9 0%
10 0%

 

muchas gracias!

 

Saludos,

JMT

 

publicado

Hola con mas dudas que certeza pero voy a intentar participar de dos maneras y en base a lo que comprendí. Esto suponiendo un rango de A1:B12

Con funciones colocar fórmula en B13:

=INDICE(A2:A12,COINCIDIR(VERDADERO,MMULT(TRANSPONER((FILA(B2:B12)>=TRANSPONER(FILA(B2:B12)))*B2:B12),SIGNO(B2:B12))>=SUMA(B2:B12)*0.8,0))

Es matricial Recuerda ingresarla presionando Ctrl + Shift + Enter.

publicado

Con VBA.

El resultado lo devuelve en B13:

Sub calcularValor()
    Dim sumaTotal As Double
    Dim sumaAcumulada As Double
    Dim i As Integer
    

    sumaTotal = Application.WorksheetFunction.Sum(Range("B2:B12")) * 0.8
    

    sumaAcumulada = 0
    For i = 2 To 12
        sumaAcumulada = sumaAcumulada + Range("B" & i).Value
        If sumaAcumulada >= sumaTotal Then

            Range("B13").Value = Range("A" & i).Value
            Exit For
        End If
    Next i
End Sub

 

publicado
hace 1 hora, jomunozta dijo:

el total del cumplimiento en este caso es 40%, el 80% del 40% es 32%, ese 32% se cumple llegando al 3° día. por lo que quiero me diga el valor del campo "días pasados", en este caso: 3

Aunque a mí en ambos casos me da como resultado 2

Ese 32% se cumple con la suma de 25% + 6% + 2% = 33% si le sumo el 2% del día 3 llego hasta 35%. Según a lo explicado es cuando se cumple o pasa el 32% (O bueno el resultado que devuelve de la SUMA()*0.8)

Saludines

Nota: Para evitar ambigüedades siempre es mejor colocar dentro de lo posible un libro de ejemplo.

 

publicado

Lamento si alguna de las propuestas no cumplen completamente. Al menos el tema está abierto por si algún maestro nos da un poco de luz y ambos aprendemos algo adicional.

Saludines.

publicado

Que tal a todos, verificando la consulta me permito proponer esta posible solución de entrada No Matricial:

=COINCIDIR(1;--(0,8*SUMA(B2:B12)<=MMULT(--(A2:A12>=TRANSPONER(MMULT(A2:A12;1)));B2:B12));)-1

Espero les sea útil.

publicado

@jomunozta

hace 3 horas, jomunozta dijo:

puedes hacerlo en el archivo que adjunté para tomar ese?

En este momento vengo en movimiento, pero estaba viendo la participación del Maestro @Oscar_MRF y es más limpia que la que propuse; debería servirte bien.

Tienes opciones de fórmulas más una sentencia VBA y bueno, uno nunca sabe tal vez haya más participaciones para que elijas la que mejor se adapte al resultado que necesitas.

hace 7 horas, jomunozta dijo:

por lo que quiero me diga el valor del campo "días pasados", en este caso: 3

Aunque debo insistir, en cualquiera de las propuestas el resultado del ejemplo es 2, no.

hace 5 horas, Israel Cassales dijo:

Ese 32% se cumple con la suma de 25% + 6% + 2% = 33% si le sumo el 2% del día 3 llego hasta 35%. Según a lo explicado es cuando se cumple o pasa el 32% (O bueno el resultado que devuelve de la SUMA()*0.8)

Saludos totales.

publicado

Hola a todos,

Efectivamente, entiendo que el objetivo en este ejemplo se cumple en el tercer paso, o sea el resultado debe ser 2.

Dejo una opción M365:

=@LET(x;B2:B12;y;SUMA(x);FILTRAR(A2:A12;SCAN(;x;LAMBDA(a;b;SI(@a>y*0,8;a;@a+@b)))>=y*0,8))

Saludos,

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.