Yıllık izin hk.

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
495
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Halit Bey,

BD6 hücresindeki değer 20 gün fakat 14 gün olması gerekiyor. Koşulları aynı olan bir üst satırdaki (BD5) kişinin değeri ise doğru 14 gün.

Saygılarımla,
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Birde bu kodu dene

Kod:
Function izinbul(izinbaslamatarihi, dogumtarihi, calisilansure, tarih)

If izinbaslamatarihi = "" Then izinbul = "": Exit Function
If dogumtarihi = "" Then izinbul = "": Exit Function
If calisilansure = "" Then izinbul = "": Exit Function
If tarih = "" Then izinbul = "": Exit Function

yıl = 365.25

tarih = CDate(tarih)
dogumtarihi = CDate(dogumtarihi)
izinbaslamatarihi = CDate(izinbaslamatarihi)
calisilansure = CDate(calisilansure)

deg1 = Val(Val(((tarih - dogumtarihi) * 1) + 1) / yıl)
deg2 = Val((tarih - izinbaslamatarihi) * 1) + 1

son = 0
If deg2 >= yıl Then
deg2 = Val((deg2 / yıl))
son1 = deg1 - deg2 - 1
i = Val(calisilansure / yıl)
j = Val(calisilansure / yıl)
For r = Val((tarih - izinbaslamatarihi) / yıl) To 1 Step -1
If izinbaslamatarihi > 0 Then
If i >= 1 And i <= 5 Then
izinbul = 14
ElseIf i >= 6 And i <= 14 Then
izinbul = 20
ElseIf i >= 15 And i <= 65 Then
izinbul = 26
End If
If izinbul < 20 Then
If (son1 - j) + i <= 17 Or (son1 - j) + i >= 50 Then
izinbul = 20
End If
End If

End If
son = son + izinbul
i = i - 1
Next r

izinbul = son
Else
izinbul = 0
End If
End Function
 

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
495
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Halit Bey,

Şimdi de BD54 hücresindeki değer 70 oldu. Son yılı 50 yaş ve üzeri olduğundan dolayı 20 gün hakediyor. Toplam izin hakediş gün sayısı 76 gün olmalı.
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
kod
Kod:
Function izinbul(izinbaslamatarihi, dogumtarihi, calisilansure, tarih)

If izinbaslamatarihi = "" Then izinbul = "": Exit Function
If dogumtarihi = "" Then izinbul = "": Exit Function
If calisilansure = "" Then izinbul = "": Exit Function
If tarih = "" Then izinbul = "": Exit Function

yıl = 365.25

tarih = CDate(tarih)
dogumtarihi = CDate(dogumtarihi)
izinbaslamatarihi = CDate(izinbaslamatarihi)
calisilansure = CDate(calisilansure)

yas = Val(Val(((tarih - dogumtarihi) * 1) + 1) / yıl)
deg1 = Val((tarih - izinbaslamatarihi) * 1) + 1

son = 0
If deg1 >= yıl Then
deg2 = Val((deg1 / yıl))

i = Val(calisilansure / yıl)

For r = Val((tarih - izinbaslamatarihi) / yıl) To 1 Step -1
If izinbaslamatarihi > 0 Then
If i >= 1 And i <= 5 Then
izinbul = 14
ElseIf i >= 6 And i <= 14 Then
izinbul = 20
ElseIf i >= 15 And i <= 65 Then
izinbul = 26
End If
If izinbul < 20 Then
If yas - i <= 17 Or yas - i >= 50 Then
izinbul = 20
End If
End If

End If

son = son + izinbul
i = i - 1
Next r

izinbul = son
Else
izinbul = 0
End If
End Function
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
bu mesajdaki koda da ayrıca bak
Kod:
Function izinbul(izinbaslamatarihi, dogumtarihi, calisilansure, tarih)

If izinbaslamatarihi = "" Then izinbul = "": Exit Function
If dogumtarihi = "" Then izinbul = "": Exit Function
If calisilansure = "" Then izinbul = "": Exit Function
If tarih = "" Then izinbul = "": Exit Function

yıl = 365.25

tarih = CDate(tarih)
dogumtarihi = CDate(dogumtarihi)
izinbaslamatarihi = CDate(izinbaslamatarihi)
calisilansure = CDate(calisilansure)

deg2 = Val(Val(((tarih - dogumtarihi) * 1) + 1) / yıl)
deg1 = Val((tarih - izinbaslamatarihi) * 1) + 1

son = 0
If deg1 >= yıl Then
deg3 = Val(calisilansure / yıl)

yas = deg2 - deg3

For i = 1 To Val((tarih - izinbaslamatarihi) / yıl)
If izinbaslamatarihi > 0 Then
If i >= 1 And i <= 5 Then
izinbul = 14
ElseIf i >= 6 And i <= 14 Then
izinbul = 20

ElseIf i >= 15 And i <= 65 Then
izinbul = 26
End If
If izinbul < 20 Then
If yas + i <= 17 Or yas + i > 50 Then
izinbul = 20
End If
End If
End If

son = son + izinbul
Next i

izinbul = son
Else
izinbul = 0
End If
End Function
 

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
495
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Halit Bey günaydın,

Sizleri çok uğraştırdığımın farkındayım.

her iki kodu denedim fakat 50 yaş üstünde hata var.

Not:
Bu hata ile ilgili tespitim, günün tarihi - izin baz tarihi eşit ise çalışılan süreye, yaş hesabına bağlı BD8 ve BD9 daki gibi izin gün sayısını doğru yapıyor. Eşit değil ise (BD6 nın yaşını aşağı çekiyorum) aradaki fark kadar yaşı geriye çekince doğru yapıyor.
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Şimdi anlamaya çalışıyorum

=izinbul(BA5;F5;AT5;(EK5+1))
=izinbul(BA5;F5;AT5;(AT$3+1))

her iki formülde neden fark var
(EK5+1))
(AT$3+1)
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
birde bu kodu dene

Kod:
Function izinbul(izinbaslamatarihi, dogumtarihi, calisilansure, tarih)

If izinbaslamatarihi = "" Then izinbul = "": Exit Function
If dogumtarihi = "" Then izinbul = "": Exit Function
If calisilansure = "" Then izinbul = "": Exit Function
If tarih = "" Then izinbul = "": Exit Function

yıl = 365.25

tarih = CDate(tarih)
dogumtarihi = CDate(dogumtarihi)
izinbaslamatarihi = CDate(izinbaslamatarihi)
calisilansure = CDate(calisilansure)

deg2 = Val(Val(((tarih - dogumtarihi) * 1) + 1) / yıl)
deg1 = Val((tarih - izinbaslamatarihi) * 1) + 1

son = 0
If deg1 >= yıl Then
deg3 = Val(calisilansure / yıl)

yas = deg2 - Val((tarih - izinbaslamatarihi) / yıl) 'deg3

For i = 1 To Val((tarih - izinbaslamatarihi) / yıl)
If izinbaslamatarihi > 0 Then
If i >= 1 And i <= 5 Then
izinbul = 14
ElseIf i >= 6 And i <= 14 Then
izinbul = 20

ElseIf i >= 15 And i <= 65 Then
izinbul = 26
End If

If izinbul < 20 Then
If yas + i <= 17 Or yas + i > 50 Then
izinbul = 20
End If
End If
End If

son = son + izinbul
Next i

izinbul = son
Else
izinbul = 0
End If
End Function
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Şunu söyleyim

Çalışılan süreyle işe giriş tarihi paralel olmalı buyün işe girenin 5000 çalışma süresi olmaz
diğer taraftan bu konu ile ilgili ilk mesajdaki dosyanızda kodlar yaşların dışında istediğiniz sonucu veriyormuydu.
 

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
495
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
1. mesajımdaki kodlar çalışılan süre ile ilgili istediğim sonucu veriyordu. Sadece yaş/kıdem süresini ilişkilendirme gibi bir sorun vardı.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
1 Nolu mesajdaki kod ile ilgili yaş ve kıdemde düzeltme yapıldı.

Kod:
Function izinbul(izinbaslamatarihi, dogumtarihi, calisilansure, tarih)


If izinbaslamatarihi = "" Then izinbul = "": Exit Function
If dogumtarihi = "" Then izinbul = "": Exit Function
If calisilansure = "" Then izinbul = "": Exit Function
If tarih = "" Then izinbul = "": Exit Function

yıl = 365.25
tarih = CDate(tarih)
deg2 = Val((tarih - CDate(izinbaslamatarihi)) * 1) + 1
deg1 = Val(Val(((tarih - CDate(dogumtarihi)) * 1) + 1) / yıl)

son = 0
If deg2 >= yıl Then
deg2 = Val((deg2 / yıl))
son1 = deg1 - deg2 - 1
i = Val(CDate(calisilansure) / yıl)
For r = Val((CDate(tarih) - izinbaslamatarihi) / yıl) To 1 Step -1
If izinbaslamatarihi > 0 Then
If i >= 1 And i <= 5 Then
izinbul = 14
ElseIf i >= 6 And i <= 14 Then
izinbul = 20
ElseIf i >= 15 And i <= 65 Then
izinbul = 26
End If

If izinbul < 20 Then
If son1 + i <= 17 Or son1 + i > 50 Then
izinbul = 20
End If
End If

End If
son = son + izinbul
i = i - 1
Next r

izinbul = son
Else
izinbul = 0
End If
End Function
 

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
495
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Halit Bey,

Sonsuz teşekkürler. Sizi çok yordum.

Sadece 50 yaş / izin hakediş tarihi geçişlerinde -+4 gün sapmalar oluyor.

Bu bile benim için yeterli sayılır. Sizleri daha çok yormak istemem.
Hakkınızı helal edin.

Kalın sağlıcakla.
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bir çok dosya oldu ben kümülatifi anlayamadım
 

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
495
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Ayrıca sabrınız için de teşekkür. :)
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Teşekkürler iyi çalışmalar
 

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
495
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Sn Suskun.

Sizlere de teşekkür ederim.

İyi ki varsınız.
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
328
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Sayın nongeyikm Merhaba

Daha önce sitedeki arkadaşlarında yardımıyla hazırlamış olduğum ve kullanım kılavuzu yazılı mevzuata uygun yıllık izin dosyası ekte sunulmuştur.
kullanmak isterseniz ve kullanım mantığı ile ilgili sorunuz olursa yazabilirsiniz.
Ancak hatırlatma yapmak istiyorum izin hakkediş ile yıllık izin mevzuatına uygun olması için hakkediş günlerine göre 14 güne +2, 20 güne +3, 26 güne +4 gün hafta tatili gelmesi gerektiğinden kişilerin yapacakları izin ile yıllık defterinde görülecek günlerin birbirini tamamlaması açısından modüle1 de ki ilgili satırlardaki hakkediş günlerini hafta tatillerine uygun olarak artırmanız gerekiyor. Dosyayı incelerseniz anlatmak istediğimi görürsünüz.

Kolay gelsin
 

Ekli dosyalar

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
495
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Sn. Ckarabacak.
İlginizden dolayı teşekkür ederim. Sizin de çalışmanız gayet güzel.
İnşaat sektöründe olduğumuzdan, her personelin birden çok giriş çıkışı vardır. İş kanununda, "tüm çalışılan süreler izin kıdem hesabında dikkate alınır" ifadesi yer aldığından dolayı, benim çalışmadaki en önemli husus, kıdem gün sayısı ve ödenmeyip artan süreleri dikkate alarak hesaplamaların yapılması.
Kısaca benim tabloda, işe giriş tarihinden ziyade önceki işe giriş-çıkışlardan oluşan kıdem gün sayısı ve bir önceki işten çıkışında ödenmeyen gün sayısı dikkate alınarak yeni bir sanal işe giriş tarihi oluşturarak hesaplamaları yapmak. Şu anki durumda 50 yaş geçiğinde +-4 sapma var.

Hayırlı günler dilerim.
 
Üst