Separar cuotas que se registraron en una fecha determinada pero en un único registro

Es posible por medio de código VBA, que Excel separé dos (o más) cuotas que se pagaron en una misma fecha pero quedaron en un solo registro teniendo en cuenta que se conoce el valor de la cuota?

Fecha Valor pagado

04/04/2014 74.134

30/05/2014 148.268

Si se sabe que la cuota es de 74.134, el código podría copiar en otras columnas para que quede así:

Fecha Valor pagado

04/04/2014 74.134

30/05/2014 74.134

30/05/2014 74.134

Sucede que me toca hacerlo manualmente pero son muchos clientes y cada día hay que hacer ese proceso para poder calcular los intereses de mora de las cuotas. Agradecería en caso de que sea posible, en el caso de que las cuotas no sean exactas, para el ejemplo considérese que el 30/05/2014 se realiza un abono de 140.000 que el código tomará las cuotas exactas y luego el saldo, con la fecha correspondiente, ejemplo:

Fecha Valor pagado

04/04/2014 74.134

30/05/2014 74.134

30/05/2014 65.866

2 respuestas

Respuesta
1

Disculpa pero no entendí el ejemplo, cómo de 2 registros salieron 3. Tendrías que explicármelo con ejemplos reales, puedes enviarme tu archivo y en una hoja me dices qué tienes y en otra hoja me pones lo que necesitas y me vas explicando paso paso cómo llegaste al resultado.

Muchas gracias por responder tan rápido... ya envié el archivo al correo indicado,

Te envié el archivo con la macro:

Sub desglosar()
'Por.Dante Amor
    j = 18
    For i = 18 To Range("A" & Rows.Count).End(xlUp).Row
        saldo = Cells(i, "D")
        If Cells(i, "E") > 1 Then
            Do While saldo >= [F9]
                Cells(j, "F") = Cells(i, "C")
                Cells(j, "G") = [F9]
                saldo = saldo - [F9]
                j = j + 1
            Loop
            If saldo > 0 Then
                Cells(j - 1, "G") = Cells(j - 1, "G") + saldo
            End If
        Else
            Cells(j, "F") = Cells(i, "C")
            Cells(j, "G") = Cells(i, "D")
            j = j + 1
        End If
    Next
End Sub

Saludos.Dante Amor

Si es lo que necesitas. No olvides valorar la respuesta.

Respuesta
1

Prueba con esta macro. Supondré que los datos están en las columnas A y B y comienzan en la segunda fila.

Sub desglosar()
Const cuota As Double = 74134
Dim cantidad As Double, i As Integer
i = 2
While Cells(i, "B") <> ""
    cantidad = Cells(i, "B")
    While cantidad > cuota
        Rows(i + 1).Insert
        Cells(i, "B") = cuota
        cantidad = cantidad - cuota
        i = i + 1
        Cells(i, "B") = cantidad
        Cells(i, "A") = Cells(i - 1, "A")
     Wend
     i = i + 1
Wend
End Sub

Y eso es todo, espero que te sirva y lo hayas entendido.  Si no es así pregúntame.  Y si ya está bnien, no olvides puntuar.

Muchas gracias! sin embargo para que quede totalmente funcional debí dar más información... que pena... sería posible ajustar que empiece e análisis en las celdas C18 (donde comienzan las fechas) y D18 (donde comienzan los pagos) y que el valor de "cuota", no sea siempre 74134 sino que corresponda al valor de la celda F9 (No hay problema que este combinada con la celda G9?). Agradezco mucho la celeridad y efectividad de la respuesta anterior y espero no ser muy gravoso con la solicitud de ajuste!

¿No podrías mandarme el fichero?

Si no puedes con datos reales hazlo con ficticios, es que tengo que saber cómo es esa celda F9 combinada con la G9.

Asimismo lo que hago yo es crear una fila nueva y copiar los datos de dos columnas. No sé si hay más columnas que se deban copiar o no. Si hubiera que duplicar otros datos se tendría que usar otro método.

Mándame el fichero a:

[email protected]

Se supone que esto funcionará:

Sub desglosar()
Dim cuota As Double
Dim cantidad As Double, i As Integer
cuota = [F9]
i = 18
While Cells(i, "D") <> ""
    cantidad = Cells(i, "D")
    While cantidad > cuota
        Rows(i + 1).Insert
        Cells(i, "D") = cuota
        cantidad = cantidad - cuota
        i = i + 1
        Cells(i, "D") = cantidad
        Cells(i, "C") = Cells(i - 1, "C")
     Wend
     i = i + 1
Wend
End Sub

Está hecho para que en la fila 18 salgo el primer dato numérico, si hay encabezado va arriba.

La pregunta no admite más respuestas

Más respuestas relacionadas