- Katılım
- 23 Eylül 2004
- Mesajlar
- 1,754
- Excel Vers. ve Dili
- Excel 2010 TR
Kod:
Function İzin_günü(Giris_tarihi, Çıkış_Tarihi, Yarım)
Dim t1 As Date, _
t2 As Date, _
c1c As Range, _
D1d As Range, _
i As Long, _
Gun As Integer, _
Tatil As Double
Set s1 = Sheets("Data")
If Giris_tarihi = "" Or Çıkış_Tarihi = "" Then
İzin_günü = 0
Else
t1 = Giris_tarihi
t2 = Çıkış_Tarihi - 1
Tatil = 0
Gun = (t2 + 1) - t1
For i20 = t1 To t2
ayss = Weekday(i20, vbSunday)
tarih_t = Format(i20, "DD.MM.YYYY")
If ayss = 1 Then
Tatil = Tatil + 1
Else
Set c1c = s1.Range("A2:A15").Find(tarih_t, LookIn:=xlValues)
If Not c1c Is Nothing Then Tatil = Tatil + 1
Set D1d = s1.Range("B2:B15").Find(tarih_t, LookIn:=xlValues)
If Not D1d Is Nothing Then Tatil = Tatil + 0.5
End If
Next i20
End If
If Yarım <> 0 Then
İzin_günü = Gun - Tatil - 0.5
Else
İzin_günü = Gun - Tatil
End If
End Function
Ekli kodlarla izin sürelerini hesaplıyorum... 16.04.2012 ve 02.05.2012 tarihleri arasında 14 gün var pazarlar hariç. ve 02.05.2012 işe başlama tarihi olduğu için onuda saymıyorum..
Aşağıdaki formul ile A2:A15 satırları arasında tatil günleri yazılı ve eğer bu 16 nisan - 02 mayıs arasındaki gunlerde tatil varsa onları izin gününden düşüyorum bu tarihler arasında 23 nisan ve 01 mayıs denk geliyor ve sonuç olarak 12 gün elde ediyorum buraya kadar herşey normal çalışıyor.
tarih_t = Format(i20, "DD.MM.YYYY")
Set c1c = s1.Range("A2:A15").Find(tarih_t, LookIn:=xlValues)
If Not c1c Is Nothing Then Tatil = Tatil + 1
Dosyanın İzin Dosyası sayfasında kayıt no değiştirinde diğer kişilerin bilgilerini getiriyor ve işlem yapıp tekrar kaydettiyorum.
izin dosyası sayfasına 1604-0205 tariler arasında izin kullanan kişiye tekrar geldiğimde izin_süresi function 12 gün hesapladığı gün sayısını 14 yapıyor formulun olduğu hücrenin üzerine gelip F2+Enter dersem tekrar 12 düşürüyor. burda bir refresh hatası var ama bir türlü çözemedim application.Volatile işe yaramadı.
İzin dosyası sayfası C3 satırına 56 yazıp enter derseniz H2 satırı 14 oluyor.
aynı şekilde güncelle butonuna basıncada aynı sorun ile karşılaşıyorum.
Bu konu hakkında yardımcı olabilirseniz sevinirim.
Win 7 64 bit ofiice 2010
İyi Çalışmalar.
