Saltar al contenido

Problema con distintos formatos de fecha


Recommended Posts

publicado

Hola de nuevo.

Siento molestar, de verdad que estoy buscando y probando y no me sale bien.

Tengo un problema para calcular dos fechas de dos celdas en Excel. En una celda me aparece el formato fecha incluyendo horas y en otra celda solo fecha.

Intento restarlas y mientras no cambie de mes la fecha larga no hay problema, pero como sea otro mes lo hace mal.

Esta es una foto de las celdas.

image.thumb.png.b8399ef4da8fbedeed4ff26798959409.png

Y el código que he comenzado a hacer y que luego necesitaré estos cálculos es este.

Sub RellenarAusencias()
ApplicationOff
'
Dim rng1, rng2 As Range
Dim FechaF As Date
Set Ws = Sheets("AusenciasPnet")
uf1 = ActiveSheet.Range("A65536").End(xlUp).Row: uf2 = Ws.Range("A65536").End(xlUp).Row
iPer = ActiveSheet.Range("D3")
'fper = Day(Application.EoMonth([d3], 0))
fper = DateSerial(Year([d3]), Month([d3]) + 1, 1) - 1

For x = 2 To uf2
valor = Ws.Range("F" & x)
Set busco = ActiveSheet.Range("A7:A" & uf1).Find(valor)
If Not busco Is Nothing Then
r = busco.Row

FechaI = Ws.Range("N" & x): FechaF = Ws.Range("O" & x)
If Ws.Range("O" & x) = "" Then FechaF = fper

If FechaI < iPer Then FechaI = fper
If FechaF > fper Then FechaF = fper

dias = FechaF - FechaI + 1
MsgBox "Inicio " & FechaI & " ,Fin " & FechaF & " ,días " & dias

End If
Next
'
ApplicationOn
End Sub

Para que veáis cuando da el fallo...

image.png.27ac18e27970e3912f6a2c075aae4d1e.png

La fecha Inicio que aparece en la celda es 28/01/2019 0:00, y sin embargo me lo trata como si fuera el mes "02".

No veo como solucionarlo.

Ah!!, el msgbox que veis en el código lo he puesto para ver si calculaba bien las fechas y por eso me he dado cuenta que lo hace mal.

 

Gracias.

Moisés.

 

publicado

Hola a todos.

Solucionado. En este mismo foro aparecía la solución

El tema ya cerrado 

Quitar hora y minutos de fecha con Macro

@johnmpl respondió a otro compañero con una duda similar, con este código que copio para el interés de quien se encuentre en una situación parecida.

Sub ConvierteFechas()
    With Range("C2", [C1].End(xlDown))
        .Value = Evaluate(Replace("if(#,int(#))", "#", .Address))
        .NumberFormat = "dd/mm/yyyy"
    End With
End Sub

Lo he adaptado y ya funciona.

Para colmo yo también tenía un error en esta línea que he corregido.

If FechaI < iper Then FechaI = iper

Gracias de todos modos!!

Moisés.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.