Soru Yıllık izin yanlış yaş hesaplama sorunu

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
Merhabalar herkese ekteki dosya da personel 3 işe giriş tarihi 25.02.2019 ve doğum tarihi 13.04.1972 olan personelin yıllık izin hakedişlerin hepsine 20 yazıyor güncel yıla göre bakıyor 2020 48 yaşında olur ve yıllık izin hakedişi 14 olması gerekiyor diğer yıllarında hangi yılda 50 yaşına girdiyse ondan sonra 20 yazması gerekiyor. Yardımlarınız için teşekkür ederim şimdiden
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,786
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Alternatif olarak size ktf öneriyorum.
1-personel sayfasına AX2 Hücresine günün tarihini yaz.
2-personel sayfasında AN3 hücresine şu formülü yaz =hakedis($F3;$I3;AN$2;$AX$2;$G3)
3-farenin imlecini görünce aşağıya ve sağa sürükleyiniz.

kod:

Kod:
Function hakedis(isegiristarihi, dogumtarihi, kontrol_yili, gunun_tarihi, istençıkıstarihi)

If isegiristarihi = "" Then
hakedis = ""
Exit Function
ElseIf dogumtarihi = "" Then
hakedis = ""
Exit Function
ElseIf kontrol_yili = "" Then
hakedis = ""
Exit Function
ElseIf gunun_tarihi = "" Then
hakedis = ""
Exit Function
End If


izindilim1 = 14
izindilim2 = 20
izindilim3 = 26
elliyas = 50
onsekizyas = 18


zaman_aralıgı = CDate(Format(Format(isegiristarihi, "dd.mm.") & kontrol_yili, "dd.mm.yyyy"))
zaman_aralıgı2 = CDate(Format(Format(isegiristarihi, "dd.mm.") & kontrol_yili, "dd.mm.yyyy"))


yer3 = CDate(zaman_aralıgı)
yer = Val((zaman_aralıgı - CDate(isegiristarihi)) * 1) + 1
yer1 = Val(Val(((zaman_aralıgı - CDate(dogumtarihi)) * 1) + 1) / 365.25)

If yer >= 365.25 Then
zaman_aralıgı = Val((yer / 365.25))
Else
zaman_aralıgı = 0
End If

If gunun_tarihi > yer3 Then
If isegiristarihi > 0 Then

If zaman_aralıgı <= 0 Then
hakedis = 0
ElseIf zaman_aralıgı >= 1 And zaman_aralıgı <= 5 Then
hakedis = izindilim1
ElseIf zaman_aralıgı >= 6 And zaman_aralıgı <= 14 Then
hakedis = izindilim2
ElseIf zaman_aralıgı >= 15 And zaman_aralıgı <= 65 Then
hakedis = izindilim3
End If

If zaman_aralıgı > 0 Then
If hakedis <= izindilim1 Then
If yer1 <= onsekizyas Then
hakedis = izindilim2
ElseIf yer1 >= elliyas Then
hakedis = izindilim3
End If
End If
End If

End If

Else
hakedis = ""
End If



If CDate(istençıkıstarihi) <> "00:00:00" Then
If CDate(istençıkıstarihi) > CDate(zaman_aralıgı2) Then
hakedis = hakedis
Else
hakedis = ""
End If
End If


End Function
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
teşekkür ederim hocam ama bütün hesaplama makro içerisinde nasıl yapıcagımı bilmiyorum bu koduda yine forumdan bir üstad yaptı oyuzden kodun içerisinde düzeltme olabilirse çok iyi olur
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,786
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Başkasının koduna müdahale çok zor benimkisi sadece alternatif bu sefer hem ktf fonksiyonu hem de makro olarak işlem yapıyor.
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
Elinize emeğinize sağlık hocam çok daha iyi olmuş bu şekilde sadece kıdem yaş toplam hakedişler çalışmıyor. Onları halletmeye çalışacagım inşallah yapabilirim
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
Hocam çok özür dileyerek toplam kullanılan kalan izin gibi alanları hesaplamalarını yapamadım
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,786
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bu kodlar onları yapmaz zaten sizin dosyadaki kodlarda o işlemi yapmıyor gibi biliyorum
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
yapıyor hocam kayıtar sayfasında veri olmadıgı için ondan hesaplama yapmıyordur
 
Üst