Diseñar un fórmula en Excel que me de un resultado

Estimados expertos tengo una consulta:

Mi idea es diseñar una función lógicas anidadas con funciones de fecha, para que me cuenten los días pendientes que tengo que cobrar de un determinado préstamo.

Es decir, si mi D.COBRO es el 15/01/2019 y mi D. PAGO es el 15/02/2019 la función debe decir "FALTAN 30 DÍAS", Si la fecha de pago es igual a la de cobro debe decir "CUMPLE". Finalmente si la deuda es mayor a la fecha de pago que me cuente los vencidos, a más fecha mayor los aumenta los número de días.

Me parece es con la función Si, hoy y Texto.

Respuesta
1

Con formulas quizá sea más difícil llegar al resultado, con macros se facilita más, ¿no importa que se haga con macros? Para intentar llegar al resultado.

Seria genial, espero poder contar con un punto de partida.

Al estar desarrollando la macro, me surgen algunas dudas. De acuerdo a sus datos: columnas DÍA COBRO y D. PAGO.

¿DÍA COBRO es el día en que debió pagar?

D. ¿PAGO es el día en que pago?

Si es así en el primer y segundo registro significa que pago con atraso.

Para los demás registros que no tiene dato en D.PAGO significa que están vencidos hasta el 15/09/2019, el resto esta vigente y en la columna estado dirá: faltan (núm de días de acuerdo a la fecha de hoy).

Si no es así por favor si es tan amable de explicarme un poco mas a detalle y si puede poner una imagen como la que subió pero con datos en la columna estado de como debe ser el dato, para que esto me indique si la macro esta funcionando.

Estimado:

Es como indicas:

DÍA COBRO: Es cuando debió pagar.

D.PAGO: Es cuando paga.

Por ejemplo, si el cliente su D.COBRO fue el 15/01/2019 y pago esa misma fecha no hay atraso, "CUMPLE" pero si paga posterior o mayor a D.COBRO o sea 17/01/2019 Es donde se debe mostrar el mensaje. NO CUMPLE

Las celdas vacías pueden son dos condiciones, o que aún esta por vencer o ya esta venció la deuda, si tengo un préstamo que D. COBRO ES 30/10/2019 Debería mostrarme falta 28 días para vencer. Por el contrario, si tuviera una fecha como 15/01/2019 y nunca pago, debería contarme los días vencidos. Debido a que, por cada día de atraso se cobra penalidades.

Adjunto una foto que hice manual para que tengas una idea. Espero se entienda la idea. En todo caso quedo atento.

De acuerdo a lo que entendí, así queda, adjunto la imagen y la macro, cualquier cosa comenta, saludos.

En la macro actualiza el nombre de la hoja al nombre que tiene su hoja en su archivo. Falta agregarle los días de vencido en caso de no haber pagado y los días que faltan en caso de que aun no vence. Me comenta si esta bien para seguir con esto que falta.

Sub EstadoPrestamo()
    uFila = Sheets("Hoja9").Range("A" & Rows.Count).End(xlUp).Row
    Dim FechaHoy, diaCobro, DiaPago As String
    FechaHoy = Sheets("Hoja9").Range("C2").Value
    For CONT = 6 To uFila
    diaCobro = Sheets("Hoja9").Range("A" & CONT).Value
    DiaPago = Sheets("Hoja9").Range("B" & CONT).Value
        If DiaPago <> "" And DiaPago <= diaCobro Then
            Range("C" & CONT).Value = "CUMPLE"
        ElseIf DiaPago <> "" And DiaPago > diaCobro Then
            Range("C" & CONT).Value = "NO CUMPLE"
        ElseIf DiaPago = "" And FechaHoy > diaCobro Then
            Range("C" & CONT).Value = "DEUDA VENCIDA"
        ElseIf DiaPago = "" And FechaHoy < diaCobro Then
            Range("C" & CONT).Value = "POR VENCER"
        End If
        DiaPago = ""
    Next CONT
End Sub

Amigo está funcionando muy bien.

Le mando la macro con el texto faltante, cualquier cosa comenta.

Sub EstadoPrestamo()
    uFila = Sheets("Hoja9").Range("A" & Rows.Count).End(xlUp).Row
    Dim FechaHoy, diaCobro, DiaPago As String
    FechaHoy = Sheets("Hoja9").Range("C2").Value
    For CONT = 6 To uFila
    diaCobro = Sheets("Hoja9").Range("A" & CONT).Value
    DiaPago = Sheets("Hoja9").Range("B" & CONT).Value
        If DiaPago <> "" And DiaPago <= diaCobro Then
            Range("C" & CONT).Value = "CUMPLE"
        ElseIf DiaPago <> "" And DiaPago > diaCobro Then
            Range("C" & CONT).Value = "NO CUMPLE"
        ElseIf DiaPago = "" And FechaHoy > diaCobro Then
             DiasTransc = Format((FechaHoy - diaCobro), "#,##0")
            Range("C" & CONT).Value = "DEUDA VENCIDA, " & " " & DiasTransc & " DIAS TRNASCURRIDOS"
        ElseIf DiaPago = "" And FechaHoy < diaCobro Then
            If diaCobro > FechaHoy Then
                DiasFalt = Format((diaCobro - FechaHoy), "#,##0")
                Range("C" & CONT).Value = "POR VENCER," & " FALTAN " & DiasFalt & " DIAS"
            Else
                Range("C" & CONT).Value = "POR VENCER"
            End If
        End If
        DiaPago = ""
    Next CONT
End Sub

Estimado disculpe la demora, me ausente por un tema familiar. Mil gracias por su aporte. Fue de gran ayuda y se adapta a mi reporte para automatizarlo.

1 respuesta más de otro experto

Respuesta
1

Te hice una fórmula con lo que necesitas, si los argumentos que agregue en la fórmula Si no son los correctos, únicamente los cambias y listo.

=SI($C2=HOY(),"Cumple",SI($C2<HOY(),"Faltan "&HOY()-$C2&" "&"Dias",SI($C2>HOY(),"Deuda Vencida por "&$C2-HOY()&" dias")))

Te la explico, si en la celda C2 hay una fecha que es igual del día, entonces te traerá la leyenda "Cumple", si la fecha que aparece en C2 es menor a la fecha del día entonces te traerá la leyenda "Fatan " - te hace el calculo de los días que te hagan falta - "dias" y por ultimo si la fecha de la celda C2 es mayor a la fecha del día, te va a traer la leyenda "Deuda vencida por " - Te hace el calculo de los días que se ha extendido la deuda - "dias".

Cualquier duda me la haces saber, pero según lo que pude entender, esto es lo que requieres.

Estimado amigo:

Gracias por tu atención, sabes ahí esta la idea. Pero que veo que la función valida con la fecha de hoy, pero cuando yo hago préstamos hago un cronograma de fechas. Es decir, en C2 iría por ejemplo. Fecha de pago 28/09/2019 a la fecha 01/10/2019 ya seria 3 días vencidos, si es mayor a la fecha que yo tengo, iría lo de no cumple o cuente días atrasados. No se si me explico en mi idea. Espero puedas atender mi duda. Mil gracias.

Entiendo, seguí la referencia errónea al hacer la fórmula.
Pero unicamente tienes que cambiar "Hoy", por la celda que contenga la fecha que quieres condicionar si modificar nada más de la fórmula.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas