• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Yıllık İzin hesaplamasında Güncel Tarih Sorunu

Katılım
29 Temmuz 2017
Mesajlar
18
Excel Vers. ve Dili
office2010
Merhabalar...

Excelde Yıllık Ücretli İzin Takibi için çalışma yapmaktayım.. Kullanmış olduğum modülde kişinin yaşını çalışma yaptığım günün tarihini baz olarak hesaplıyor. ancak kişi 18 yasından küçük veya 50 ve üstü yaş durumunda güncel tarihe bakmaksızın izin günü atıyor. Kısacası öncelikle güncel tarih hesaplamanın olmazsa olmazı olarak hesaplama yapılmalı...
Yardımlarınız için şimdiden teşekkürler....

Kod:
Function izinbul(sontar, bastar, haktar, yastar As Date) As Integer
yas = (CLng(haktar) - CLng(yastar)) / 365

basyil = Year(bastar)
basay = Month(bastar)
basgun = Day(bastar)

sonyil = Year(sontar)
sonay = Month(sontar)
songun = Day(sontar)

If basgun > songun Then sonay = sonay - 1
If basay > sonay Then sonyil = sonyil - 1

farkyil = sonyil - basyil

izinbul = 0
If farkyil >= 1 Then izinbul = 14
If farkyil < 5 And yas < 18 Or yas > 50 Then izinbul = 20
If farkyil >= 6 Then izinbul = 20
If farkyil >= 15 Then izinbul = 26
End Function
 
Merhaba,
Örnek bir dosya eklerseniz yardım alma şansınız daha yüksek olur.
 
Bu kodu bir denermisiniz.

Kod:
Function izinbul(sontar, bastar, haktar, yastar As Date) As Integer
yas = (CLng(haktar) - CLng(yastar)) / 365

basyil = Year(bastar)
basay = Month(bastar)
basgun = Day(bastar)

sonyil = Year(sontar)
sonay = Month(sontar)
songun = Day(sontar)

If basgun > songun Then sonay = sonay - 1
If basay > sonay Then sonyil = sonyil - 1

farkyil = sonyil - basyil

izinbul = 0
If farkyil >= 1 And farkyil <= 5 Then
izinbul = 14
ElseIf farkyil >= 6 And farkyil >= 14 Then
izinbul = 20
ElseIf farkyil >= 15 Then izinbul = 26
End If
If farkyil < 5 And yas < 18 Or yas > 50 Then izinbul = 20

End Function
 
Malesef Halit3... gün olarak 1 yılı doldurmuş olmasa bile yaşı 50 üzeri ve 18 altı için direkt 20 gün atıyor...

Kod:
Bu kodu bir denermisiniz.

Kod:  Tüm Kodu Seç (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Function izinbul(sontar, bastar, haktar, yastar As Date) As Integer
yas = (CLng(haktar) - CLng(yastar)) / 365

basyil = Year(bastar)
basay = Month(bastar)
basgun = Day(bastar)

sonyil = Year(sontar)
sonay = Month(sontar)
songun = Day(sontar)

If basgun > songun Then sonay = sonay - 1
If basay > sonay Then sonyil = sonyil - 1

farkyil = sonyil - basyil

izinbul = 0
If farkyil >= 1 And farkyil <= 5 Then
izinbul = 14
ElseIf farkyil >= 6 And farkyil >= 14 Then
izinbul = 20
ElseIf farkyil >= 15 Then izinbul = 26
End If
If farkyil < 5 And yas < 18 Or yas > 50 Then izinbul = 20

End Function
 
Evvelce yazmış olduğum kod

Kod:
Function yillikizin(isegiristarihi, dogumtarihi, tarih)

If isegiristarihi = "" Then
yillikizin = ""
Exit Function
ElseIf dogumtarihi = "" Then
yillikizin = ""
Exit Function
ElseIf tarih = "" Then
yillikizin = ""
Exit Function

End If

yas1 = Val((tarih - CDate(isegiristarihi)) * 1) + 1
yas2 = Val(Val(((tarih - CDate(dogumtarihi)) * 1) + 1) / 365.25)

If yas1 >= 365.25 Then
tarih = Val((yas1 / 365.25))
Else
tarih = 0
End If


If isegiristarihi > 0 Then

If tarih <= 0 Then
yillikizin = 0
ElseIf tarih >= 1 And tarih <= 5 Then
yillikizin = 14
ElseIf tarih >= 6 And tarih <= 14 Then
yillikizin = 20
ElseIf tarih >= 15 And tarih <= 65 Then
yillikizin = 26
End If

If tarih > 0 Then
If yillikizin <= 14 Then
If yas2 <= 18 Then
yillikizin = 20
ElseIf yas2 >= 50 Then
If yillikizin < 20 Then
yillikizin = 20
End If
End If
End If
End If
End If


End Function
 

Ekli dosyalar

kodunuz.

Kod:
Function izinbul(sontar, bastar, haktar, yastar As Date) As Integer
yas = (CLng(haktar) - CLng(yastar)) / 365

basyil = Year(bastar)
basay = Month(bastar)
basgun = Day(bastar)

sonyil = Year(sontar)
sonay = Month(sontar)
songun = Day(sontar)

If basgun > songun Then sonay = sonay - 1
If basay > sonay Then sonyil = sonyil - 1

farkyil = sonyil - basyil

izinbul = 0

If farkyil <= 0 Then
izinbul = 0
ElseIf farkyil >= 1 And farkyil <= 5 Then
izinbul = 14
ElseIf farkyil >= 6 And farkyil >= 14 Then
izinbul = 20
ElseIf farkyil >= 15 Then izinbul = 26
End If

If farkyil > 0 Then
If farkyil < 5 And yas < 18 Or yas > 50 Then izinbul = 20
End If

End Function
 
Bu kodu örnek dosya üzerinde uygulayarak göndermeniz mümkün mü acaba?

5 nolu mesaja örnek dosya eklendi

Kod:
Function izin(isegiristarihi, dogumtarihi, tarih)

If isegiristarihi = "" Or dogumtarihi = "" Or tarih = "" Then
izin = ""
Exit Function
End If

izin = 0
deg = 365.25

yas1 = Val((CDate(tarih) - CDate(isegiristarihi)) * 1) + 1
yas2 = Val(Val(((CDate(tarih) - CDate(dogumtarihi)) * 1) + 1) / deg)

If yas1 >= deg Then
tarih = Val((yas1 / deg))
Else
tarih = 0
End If

If tarih > 0 Then
If yas2 <= 18 Or yas2 >= 50 Then
izin2 = 20
End If
End If

If tarih >= 1 And tarih <= 5 Then
izin = 14
ElseIf tarih >= 6 And tarih <= 14 Then
izin = 20
ElseIf tarih >= 15 Then
izin = 26
End If

If izin2 > izin Then izin = izin2

End Function
 
Sayın Halit3 çok teşekkür ederim tam istediğim gibi oldu... Sağ olun Var olun...

kodunuz.

Kod:
Function izinbul(sontar, bastar, haktar, yastar As Date) As Integer
yas = (CLng(haktar) - CLng(yastar)) / 365

basyil = Year(bastar)
basay = Month(bastar)
basgun = Day(bastar)

sonyil = Year(sontar)
sonay = Month(sontar)
songun = Day(sontar)

If basgun > songun Then sonay = sonay - 1
If basay > sonay Then sonyil = sonyil - 1

farkyil = sonyil - basyil

izinbul = 0

If farkyil <= 0 Then
izinbul = 0
ElseIf farkyil >= 1 And farkyil <= 5 Then
izinbul = 14
ElseIf farkyil >= 6 And farkyil >= 14 Then
izinbul = 20
ElseIf farkyil >= 15 Then izinbul = 26
End If

If farkyil > 0 Then
If farkyil < 5 And yas < 18 Or yas > 50 Then izinbul = 20
End If

End Function
 
Teşekkürler iyi çalışmalar
 
Geri
Üst