Repartir un Saldo hasta quedar en cero

Debo repartir el saldo en una cantidad de sucursales, para evitar fracciones es lo que hago es incrementar uno a uno hasta agotar el SALDO INICIAL adjunto una imagen como ejemplo pero la lista a repartir es de 98 mil productos.

Respuesta
4

Según el ejemplo tienes 5 sucursales, pero la macro funciona con el número de sucursales que le pongas en el parámetro suc dentro de la macro.

Sub Repartir()
'Por.Dante Amor
    fini = 5    'fila inicial
    cini = "B"  'columna inicial
    suc = 5     'número de sucursales
    '
    Application.ScreenUpdating = False
    k = Columns(cini).Column + 2
    u = Range(cini & Rows.Count).End(xlUp).Row
    Range(Cells(fini, k), Cells(u, k + suc)).ClearContents
    For i = fini To u
        saldo = Cells(i, cini)
        n = 0
        k = Columns(cini).Column + 2
        If saldo < suc Then
            For j = saldo To 1 Step -1
                Cells(i, k) = 1
                k = k + 1
            Next
        Else
            Do While True
                div = saldo / suc
                If div - Int(div) > 0 Then
                    saldo = saldo - 1
                    n = n + 1
                Else
                    Exit Do
                End If
            Loop
            k = Columns(cini).Column + 2
            For y = 1 To suc
                Cells(i, k) = div
                k = k + 1
            Next
            k = Columns(cini).Column + 2
            For x = 1 To n
                Cells(i, k) = Cells(i, k) + 1
                k = k + 1
            Next
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "Repartir saldo", vbInformation, "TERMINADO"
End Sub

Al final de mi respuesta puedes seleccionar el botón para valorar, r ecuerda valorar adecuadamente las respuestas para continuar recibiendo el apoyo.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

1 respuesta más de otro experto

Respuesta
1

He subido un libro de ejemplo con una de las (supongo) muchas posibilidades de hacerlo que habrá: www.jrgc.es/ejemplos/ejemplo_20161111a.xlsx

En Hoja1!B:F están las fórmulas para repartir las cantidades que hay en la columna A entre 5. El problema es que, por la forma de trabajar de las fórmulas, siempre saldrán más "favorecidas" las sucursales más hacia la derecha. Por lo tanto, en la hoja 'aleatorios' hay eso, aleatorios, que sirven para distribuir de forma aleatoria las cantidades entre las sucursales. Esto está hecho en Hoja1!H:L. Las fórmulas en Hoja1! M:M son para verificar que la distribución cuadra con las cantidades iniciales.
Saludos_

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas