Modificar un código VBA para segregar pedidos de 50 en 50

As)

Por consulta, tengo un código VBA que me segrega todo a una unidad. Es decir, si tengo un Item con 50 unidades, este lo vuelve todo a 1, es una necesidad de un proceso.

Pero ahora quisiera actualizar la programación para que segregue de 50 en 50

Ejemplo: Si tengo un archivo como en la foto en la columna G hay un SKU por 100 y otro 200.

Al ejecutar la macro debe quedar así: Los cambios son el la columna G

Mi archivo puede tener N cantidad de filas y debe hacer los cambios en base al SKU

Adjunto el código VBA que segregaba de 1 para ver como se actualiza.

A la espera de su valiosa ayuda.

Sub IgualarCantidades()
Application.ScreenUpdating = False
    For i = Range("G" & Rows.Count).End(xlUp).Row To 2 Step -1
        If Cells(i, "G") > 1 Then
            n = Cells(i, "G")
            Rows(i).Copy
            Rows(i + 1 & ":" & i + n - 1).Insert Shift:=xlDown
            Range("G" & i & ":G" & i + n - 1) = 1
        End If
    Next
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    MsgBox "Terminado", vbInformation
End Sub

1 Respuesta

Respuesta
2

Te dejo la macro que solicitas. Estoy considerando que puede haber valores que no necesariamente sean múltiplos de 50 (ver imagen).

Sub IgualarCantidades()
'Ajustada x Elsamatilde
Application.ScreenUpdating = False
    For i = Range("G" & Rows.Count).End(xlUp).Row To 2 Step -1
        vez = 0
        If Cells(i, "G") > 50 Then    '1
            n = Cells(i, "G")
            canti = Int(n / 50)
            resto = n - (canti * 50)
            If resto = 0 Then canti = canti - 1
            For a = 1 To canti
                Rows(i).Copy
                Rows(i + 1).Insert Shift:=xlDown
                'coloca 50 en col G
                Range("G" & i) = 50
                'evaluar si queda resto
                If resto > 50 Then
                    Range("G" & i + 1) = 50
                Else
                    If resto <> 0 Then
                        Range("G" & i + 1) = resto
                        resto = 0
                    ElseIf vez = 0 Then
                        Range("G" & i + 1) = 50
                        vez = 1
                    End If
                End If
            Next a
        End If
    Next i
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    MsgBox "Terminado", vbInformation
End Sub

Sdos y no olvides valorar la respuesta.

Elsa

http://aplicaexcel.galeon.com/manuales.htm

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas