Restar rango de fechas con valor vacío

Tengo dos variables fecha liquidación y una fecha de ultimo pago y la idea es calcular la diferencia de días entre estas dos fechas sin embargo no siempre existe fecha de ultimo pago he utilizado la fórmula =DifFecha("d",[txt_fecmaxliq],[txt_ultfechpago]) pero cuando txt_ultfechpago es cero no calcula nada como podría solucionarlo

2 respuestas

Respuesta
2

¿Es cero o es nulo? Si es nulo puedes usar la función NZ, en este caso

nz([txt_ultfechpago])

Es cero he intentado con nz y no funciono

Vamos a ver si consigo explicarme. Un ejemplo para el caso de que un valor de fecha sea nulo, es burdo, pero creo que sirve. Imagínate que le doy la orden a alguien "Róbale a Jhon el dinero que lleva en el bolsillo" pero el ladrón sabe que no llevas nada, por tanto no obedece la orden. Tu le está diciendo que reste dos fechas pero el sistema sabe que una no existe por tanto no obedece la orden. En la imagen, le digo que al recibir el enfoque el cuadro de texto 133 reste texto129-texto131. Cuando pongo el cursor

No hace nada, ya que texto 131 es nulo. Por cierto, lo que ves a la derecha es el valor real de la fecha que es con la que de verdad trabaja el ordenador.

Vamos a ver el caso de que texto131 sea cero. Para eso tengo que poner la fecha marcada con una flecha.

Es decir, que si la "fecha2" es cero, la diferencia va a ser la misma "Fecha1"

Pero puedes usar la función NZ diciéndole que en caso de que sea nulo coja un valor determinado, por ejemplo

texto1=nz([texto2]) Si texto 2 es nulo texto 1=0

texto1=nz([texto2],4) si texto2 es nulo texto1=4

texto1=nz([texto2],"buenos días") si texto2 es nulo texto1=Buenos días

Texto1=nz([texto2],#25/7/2019#)

¡Gracias! Por tu explicación tan detallada voy a realizar las debidas pruebas y comentare cual fue la solución más adecuada

Respuesta
2

Yo usaría la función Nz pero indicando un valor para cuando no haya ultima fecha de pago, para que no te encuentres con "cosas raras", por ejemplo:

=DifFecha("d",[txt_fecmaxliq],Nz([txt_ultfechpago],Fecha()))

que usará la fecha actual para calcular la diferencia si no hay ningún pago

=DifFecha("d",[txt_fecmaxliq],Nz([txt_ultfechpago],[txt_fecmaxliq]))

Que usará la fecha de liquidación como fecha de último pago si aún no se hizo ningún pago. (Y por tanto la diferencia será 0)

Si lo usas tal cual te indica Icue, tomará como fecha de última liquidación el 30/12/1899 y te devolverá una diferencia negativa. Por ejemplo, si tienes como txt_fecmaxliq el 01/11/2019 y nada en txt_ultfechpago, la expresión =DifFecha("d",[txt_fecmaxliq],Nz([txt_ultfechpago])) te devolverá -43770.

¡Gracias!  estoy trabajando en probar si me funciona ya te comentare 

Tendrías otra solución a tu problema: analizar previamente a calcular la diferencia el campo txt_ultfechpago y actuar en consecuencia.

Por ejemplo:

=SiInm(EsNulo([txt_ultfechpago]),"Aún no pagó nada",DifFecha("d",[txt_fecmaxliq],Nz([txt_ultfechpago])))

Que te pondrá "Aún no pagó nada" en el cuadro de texto si en txt_ultfechpago no tienes ningún valor, o te calculará la diferencia si hay algo.

Obviamente puedes poner la condición que quieras (EsNulo([txt_ultfechpago]) o Nz([txt_ultfechpago],0)=0 o ....) y también cualquier otro mensaje u cosa (por ejemplo que la diferencia sea 0, no muestre nada....)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas