• DİKKAT

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

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

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
297
Excel Vers. ve Dili
2016
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

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
 
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
 
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.
 
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
 
Hocam çok özür dileyerek toplam kullanılan kalan izin gibi alanları hesaplamalarını yapamadım
 
Bu kodlar onları yapmaz zaten sizin dosyadaki kodlarda o işlemi yapmıyor gibi biliyorum
 
yapıyor hocam kayıtar sayfasında veri olmadıgı için ondan hesaplama yapmıyordur
 
Geri
Üst