Diff2dates Sorusu

1 2 3
14/02/2009, 13:02

KCMZ

sayın demiral
teşekkür ederim
ben yaptım.
ben sadece ne için istediğimi açıklamak istemiştim.
sizin açıklamanızla yaptığımda sadece hafta olarak hesaplasa da işime yaradı.
hafta +gün olarak olmuyor sanırım değil mi.
konu benim için yeterli olmuştur.
taşıyabilirsiniz.
14/02/2009, 13:05

mehmetdemiral

O da olur. Toplarsınız günleri bölersiniz 7'ye. Tam sayı hafta, küsurat gün olur. Formüle de gerek yok.
25/08/2009, 15:28

EROLAKSAKAL

sayın mehmetdemiral ben örneğinizi kullanıyorum örnekte 'dmy' şeklinde formülü verince atıyorum 28 gün 5 ay 2 yıl diyor çok güzel fakat matamatiksel işlemlerde kullanamıyorum 28 metin1 5 metin2 2 metin3 gibi farklı metinlere sadece rakam olarak yazdıramazmıyım. yardımcı olursanız sevinirim.
25/08/2009, 16:27

Seruz

Onun için ekteki örneği kullanabilirsiniz.

Kod:
Public Function YilAyGunFarki(Interval As String, Date1 As Date, Date2 As Date) As Integer
'Diff2Dates fonksiyonundan cevrilerek yazilmistir.
'
'Bu fonksiyon 2 tarih arasındaki Yıl,Ay veya gün farklarını hesaplar.
'
'1.Parametrede Gün için "g", Ay için "a", Yıl için "y" belirtilerek hangi dönemin farkının istendiği belirtilmelidir.
'2. ve 3. Parametrelerde tarihler belirtilir
'
'? YilAyGunFarki("g", #10/09/1971#, #29/09/2008#) = 19
'? YilAyGunFarki("a", #10/09/1971#, #29/09/2008#) = 9
'? YilAyGunFarki("y", #10/09/1971#, #29/09/2008#) = 36

On Error GoTo Hata_YilAyGunFarki
    Dim dtTemp As Date
    Dim lngDiffYears As Long
    Dim lngDiffMonths As Long
    Dim lngDiffDays As Long

'Parametrelerin dogrulugu kontrol ediliyor
    If Not (Interval = "g" Or Interval = "a" Or Interval = "y") Then Exit Function
    If Not (IsDate(Date1)) Then Exit Function
    If Not (IsDate(Date2)) Then Exit Function

'Tarih1 Tarih2 den küçükse yerleri değiştiriliyor
    If Date1 > Date2 Then
       dtTemp = Date1
       Date1 = Date2
       Date2 = dtTemp
    End If

'Yıl, Ay ve Gün farkları bulunuyor
    YilAyGunFarki = 0
    
    lngDiffYears = Abs(DateDiff("yyyy", Date1, Date2)) - IIf(Format$(Date1, "mmdd") <= Format$(Date2, "mmdd"), 0, 1)
    Date1 = DateAdd("yyyy", lngDiffYears, Date1)
    
    lngDiffMonths = Abs(DateDiff("m", Date1, Date2)) - IIf(Format$(Date1, "dd") <= Format$(Date2, "dd"), 0, 1)
    Date1 = DateAdd("m", lngDiffMonths, Date1)
    
    lngDiffDays = Abs(DateDiff("d", Date1, Date2))
    Date1 = DateAdd("d", lngDiffDays, Date1)

'Parametreye istenen göre sonuç gönderiliyor
    Select Case Interval
    Case "y"
        YilAyGunFarki = lngDiffYears
    Case "a"
        YilAyGunFarki = lngDiffMonths
    Case "g"
        YilAyGunFarki = lngDiffDays
    End Select
    
Sonu_Hata_YilAyGunFarki:
   Exit Function

Hata_YilAyGunFarki:
   Resume Sonu_Hata_YilAyGunFarki

End Function
25/08/2009, 17:46

EROLAKSAKAL

=YilAyGunFarki("a";[ISE_GIRIS_TARIH];(IIf([CIKIS_TAR] Is Null;Date();[CIKIS_TARIH]));Doğru) formulde çıkış değeri olmadığı zaman hata veriyor hata vermemesi için bende yukarıdaki formülü yazdım fakat çalışmıyor daha doğrusu kodu kabul etmedi neden anlamadım datadiff2 de çalışıyor
25/08/2009, 18:03

Seruz

Formüldeki ";Doğru" yazısı fazlalık gibi duruyor, bir de aşağıdaki gibi deneyin

Kod:
=YilAyGunFarki("a";[ISE_GIRIS_TARIH];(IIf([CIKIS_TAR] Is Null;Date();[CIKIS_TARIH])))
1 2 3