Yıllık İzin Dönüş Tarihini Hesaplama isimli içerikte, çalışanların izinden dönecekleri tarihi bulmanın nasıl olacağını öğreten ipucu niteliğinde bir yazı bulunmaktadır.
Yıllık Ücretli İzin Detayları
Türk mevzuatına göre, yıllık izin süreleri iş günleri üzerinden hesaplanır, yani hafta sonları (Cumartesi ve Pazar) ve resmi tatiller izin süresine dahil edilmez.Bunun için İŞGÜNÜ.ULUSL (WORKDAY.INTL) fonksiyonunu kullanabiliriz. Bu fonksiyon, belirli bir başlangıç tarihinden itibaren belirtilen iş günü sayısını hesaplar. Resmi tatilleri de hesaba katmak için ek bir dizi kullanabiliriz.
İzin Dönüş Tarihi Hesaplama (Hafta Sonları Hariç)
Kod:
=İŞGÜNÜ.ULUSL(A1; B1; 1)
- A1 hücresindeki başlangıç tarihinden itibaren
- B1 hücresindeki gün sayısını
- Hafta sonlarını (Cumartesi ve Pazar) hesaba katarak
- İzin dönüş tarihini hesaplar.
İzin Dönüş Tarihi Hesaplama (Hafta Sonları ve Resmi Tatiller Hariç)
Eğer resmi tatilleri de hesaba katmak istiyorsanız, resmi tatil tarihlerinin yer aldığı bir liste oluşturmanız gerekir. Diyelim ki bu liste E1:E10 hücre aralığında yer alıyor.
Kod:
=İŞGÜNÜ.ULUSL(A1; B1; 1; E1:E10)
- A1 hücresindeki başlangıç tarihinden itibaren
- B1 hücresindeki gün sayısını
- Hafta sonları ve E1:E10 aralığındaki resmi tatilleri hesaba katarak
- İzin dönüş tarihini hesaplar.
Örnek Kullanım
- A1 Hücresi: 01/01/2024 (İzin başlangıç tarihi)
- B1 Hücresi: 10 (İzin gün sayısı)
- E1:E10 Hücre Aralığı: 23/04/2024, 01/05/2024, 19/05/2024, ... (Resmi tatiller)
Kod:
=İŞGÜNÜ.ULUSL(A1; B1; 1; E1:E10)
Makro (VBA) ile İzin Dönüş Tarihi Hesaplama
Eğer VBA kullanarak bir kullanıcı tanımlı fonksiyon (KTF) oluşturmak isterseniz, aşağıdaki kodu kullanabilirsiniz:- VBA Penceresini Açın: Alt + F11 tuşlarına basın.
- Modül Ekleyin: "Insert" menüsünden "Module" seçeneğini tıklayın.
- Aşağıdaki Kodu Yapıştırın:
VBA:
Function IzinDonusTarihi(baslangicTarihi As Date, izinGunSayisi As Integer, _
Optional resmiTatilTarihleri As Range) As Date
Dim calismaGunleri As Integer
Dim tarih As Date
Dim tatil As Range
Dim tatilTarihler() As Date
Dim i As Integer
' Resmi tatil tarihlerini diziye aktar
If Not IsMissing(resmiTatilTarihleri) Then
ReDim tatilTarihler(1 To resmiTatilTarihleri.Count)
i = 1
For Each tatil In resmiTatilTarihleri
tatilTarihler(i) = tatil.Value
i = i + 1
Next tatil
End If
' Çalışma günlerini hesapla
tarih = baslangicTarihi
calismaGunleri = 0
Do While calismaGunleri < izinGunSayisi
tarih = tarih + 1
If Weekday(tarih, vbMonday) < 6 Then ' Pazartesi-Cuma
If IsMissing(resmiTatilTarihleri) Then
calismaGunleri = calismaGunleri + 1
ElseIf IsError(Application.Match(tarih, tatilTarihler, 0)) Then
calismaGunleri = calismaGunleri + 1
End If
End If
Loop
IzinDonusTarihi = tarih
End Function
Kullanım:
- A1 Hücresi: 01/01/2024 (İzin başlangıç tarihi)
- B1 Hücresi: 10 (İzin gün sayısı)
- E1:E10 Hücre Aralığı: 23/04/2024, 01/05/2024, 19/05/2024, ... (Resmi tatiller)
Kod:
=IzinDonusTarihi(A1, B1, E1:E10)
Siz de, bu yazıdaki bilgiler ışığında; kolayca çalışanların izinden dönüş tarihlerinin hesaplamasını yapabilirsiniz.