• DİKKAT

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

Haftasonu tatillerini atlattırma yardım

Katılım
21 Eylül 2008
Mesajlar
16
Excel Vers. ve Dili
2007 TR
Merhaba

Belirlenen bir tarihin üzerine 7 gün eklenmesi ve bu eklenen 7 gün eğer cumartesi güne denk geliyorsa takip eden pazartesi tarihi vermeli. bu eklenen 7gün eğer pazar gününe denk geliyorsa takip eden pazartesi gününü tarihi vermeli. yardımlarınız için şimdiden teşekkürler.
 

Ekli dosyalar

  • gun.rar
    gun.rar
    7.2 KB · Görüntüleme: 80
Son düzenleme:
yıllar önce kullanmıştım bunu bir modülün içine atarak kullanabilirsiniz
'Bu modüldeki fonksiyonlar ile Girilen Tarihin;
'-Tatil olup olmadığını,
'-Tatil ise Cinsini (resmi,Dini,Haftasonu)
'-İlk İş gününü tespit edebilirsiniz.
'Not: Dini Tatilleri 2015 yılına kadar hesaplar
'Hsayar.
'============================================
Enum TatilTipleri
enmHayır = 0
enmHaftasonu = 1
enmResmiTatil = 2
enmDiniTatil = 3
End Enum
Function fncİlkResmiGün(tarih As Date)
'Girilen Tarih resmi gün ise o gün değilse Sonraki İlk Resmi Gün Döner.
If tarih = Empty Then Exit Function
sorResmiGün:
If fncTatilGünü(tarih) = "Hayır" Then
fncİlkResmiGün = CDate(Format(tarih, "dd/mm/yyyy"))
Else
tarih = tarih + 1
GoTo sorResmiGün
End If
End Function
Function fncTatilGünü(tarih As Date) As String
If tarih = Empty Then Exit Function
Dim strCevap As TatilTipleri
tarih = CDate(Format(tarih, "dd/mm/yyyy"))

strCevap = enmHayır
If fncResmiTatil(tarih) = True Then strCevap = enmResmiTatil: GoTo Son
If fncDiniTatil(tarih) = True Then strCevap = enmDiniTatil: GoTo Son
If fncHaftasonuTatili(tarih) = True Then strCevap = enmHaftasonu: GoTo Son
Son:
Select Case strCevap
Case Is = 0: fncTatilGünü = "Hayır"
Case Is = 1: fncTatilGünü = "Hafta Sonu"
Case Is = 2: fncTatilGünü = "Resmi Tatil"
Case Is = 3: fncTatilGünü = "Dini Tatil"
End Select
End Function
Function fncHaftasonuTatili(tarih As Date) As Boolean
tarih = CDate(Format(tarih, "dd/mm/yyyy"))
fncHaftasonuTatili = False
If Weekday(tarih, vbMonday) = 6 Or Weekday(tarih, vbMonday) = 7 Then
fncHaftasonuTatili = True

End If
End Function
Function fncResmiTatil(tarih As Date) As Boolean
If tarih = Empty Then Exit Function
tarih = CDate(Format(tarih, "dd/mm/yyyy"))
ResmiTatiller = Array("01.01.1900", "23.04.1920", "19.05.1919", "30.08.1923", "29.10.1923")
For Each TatilGunu In ResmiTatiller
TatilGunu = CDate(Format(TatilGunu, "dd/mm/yyyy"))
If Day(TatilGunu) = Day(tarih) And Month(TatilGunu) = Month(tarih) Then
fncResmiTatil = True
Exit For
End If

Next
End Function
Function fncDiniTatil(tarih) As Boolean
If tarih = Empty Then Exit Function
tarih = CDate(Format(tarih, "dd/mm/yyyy"))
Select Case Year(tarih)
Case Is = 2008
DiniTatilGünleri = Array("29.09.2008", "30.09.2008", "01.10.2008", "02.10.2008", "06.12.2008", "07.12.2008", "08.12.2008", "09.12.2008", "10.12.2008", "11.12.2008", "12.12.2008", "13.12.2008", "14.12.2008")
For Each TatilGunu In DiniTatilGünleri
TatilGunu = CDate(Format(TatilGunu, "dd/mm/yyyy"))
If CDate(TatilGunu) = tarih Then
fncDiniTatil = True
Exit For
End If
Next
Case Is = 2009
DiniTatilGünleri = Array("19.09.2009", "20.09.2009", "21.09.2009", "22.10.2009", "26.11.2009", "27.11.2009", "28.11.2009", "29.11.2009", "30.11.2009")
For Each TatilGunu In DiniTatilGünleri
TatilGunu = CDate(Format(TatilGunu, "dd/mm/yyyy"))
If CDate(TatilGunu) = tarih Then
fncDiniTatil = True
Exit For
End If
Next
Case Is = 2010
DiniTatilGünleri = Array("08.09.2010", "09.09.2010", "10.09.2010", "11.09.2010", "15.11.2010", "16.11.2010", "17.11.2010", "18.11.2010", "19.11.2010")
For Each TatilGunu In DiniTatilGünleri
TatilGunu = CDate(Format(TatilGunu, "dd/mm/yyyy"))
If CDate(TatilGunu) = tarih Then
fncDiniTatil = True
Exit For
End If
Next
Case Is = 2011
DiniTatilGünleri = Array("29.08.2011", "30.08.2011", "31.08.2011", "01.09.2011", "05.11.2011", "06.11.2011", "07.11.2011", "08.11.2011", "09.11.2011")
For Each TatilGunu In DiniTatilGünleri
TatilGunu = CDate(Format(TatilGunu, "dd/mm/yyyy"))
If CDate(TatilGunu) = tarih Then
fncDiniTatil = True
Exit For
End If
Next
Case Is = 2012
DiniTatilGünleri = Array("18.08.2012", "19.08.2012", "20.08.2012", "21.08.2012", "24.10.2012", "25.10.2012", "26.10.2012", "27.10.2012", "28.10.2012")
For Each TatilGunu In DiniTatilGünleri
TatilGunu = CDate(Format(TatilGunu, "dd/mm/yyyy"))
If CDate(TatilGunu) = tarih Then
fncDiniTatil = True
Exit For
End If
Next
Case Is = 2013
DiniTatilGünleri = Array("07.08.2013", "08.08.2013", "09.08.2013", "10.08.2013", "14.10.2013", "15.10.2013", "16.10.2013", "17.10.2013", "18.10.2013")
For Each TatilGunu In DiniTatilGünleri
TatilGunu = CDate(Format(TatilGunu, "dd/mm/yyyy"))
If CDate(TatilGunu) = tarih Then
fncDiniTatil = True
Exit For
End If
Next
Case Is = 2014
DiniTatilGünleri = Array("27.07.2014", "28.07.2014", "29.07.2014", "30.07.2014", "03.10.2014", "04.10.2014", "05.10.2014", "06.10.2014", "07.10.2014")
For Each TatilGunu In DiniTatilGünleri
TatilGunu = CDate(Format(TatilGunu, "dd/mm/yyyy"))
If CDate(TatilGunu) = tarih Then
fncDiniTatil = True
Exit For
End If
Next
Case Is = 2015
DiniTatilGünleri = Array("16.07.2015", "17.07.2015", "18.07.2015", "19.07.2015", "22.09.2015", "23.09.2015", "24.09.2015", "25.09.2015", "26.09.2015")
For Each TatilGunu In DiniTatilGünleri
TatilGunu = CDate(Format(TatilGunu, "dd/mm/yyyy"))
If CDate(TatilGunu) = tarih Then
fncDiniTatil = True
Exit For
End If
Next
Case Else
'http://www.takvim.com/resmi_tatiller.php
'Adresinden kontrol ederk genişletebilirsiniz.
End Select
End Function
 
Merhaba,

Tarih ve Saat Fonksiyonların Detaylı Analizi adli linkten alıntı :

İki Tarih Arasındaki Çalışılan Gün Sayısını Hesaplama

İki tarih arasında hafta sonları (Cumartesi ve Pazar) ile tatil günleri dışındaki tam işgününü hesaplalamak gerektiğinde TAMİŞGÜNÜ(NETWORKDAYS) Fonksiyonu kullanılır. (Bu fonksiyon Analysis ToolPak yüklendiğinde hazır hale gelir).

=TAMİŞGÜNÜ(Başlangıç_Tarihi;Bitiş_Tarihi;Tatil_Gün leri)
=NETWORKDAYS(Başlangıç_Tarihi;Bitiş_Tarihi;Tatil_G ünleri)

TABLO 6 İki tarih arasındaki tam iş gününü hesaplayan formül vardır. A2:A3 arası tatil günü (Ramazan bayramını). E2 deki formül :

=TAMİŞGÜNÜ(C1;D1;A2:A3)
=NETWORKDAYS(C1;D1;A2:A3)
 
C2 hücresine

=A2+7+ELEMAN(HAFTANINGÜNÜ(A2;2);0;0;0;0;0;2;1)

yazıp aşağı doğru çekiniz.

.
 
Merhaba Arkadaşlar;

Forma yeni katıldım. Mükerrer bir konuya değinmek istemiyorum fakat arama sonuçlarında bulamadım. Yardımcı olursanız sevinirim.

Ben çok sayıda stajyer öğrenci çalıştırıyorum. Sigorta primlerinin ödenmesinde iki tarih arasındaki iş günlerinin (cumartesi dahil) hesaplanması ve bu iş günlerinin de brüt asgari ücretin günlük tutarı ile çarpılarak hesaplanması gerekmektedir. Ayrıca aynı ay içerisinde ki eksik gün sayısını da vermelidir. Örneğin;

Temmuz ayı içerisinde 05.07.2012 tarihinde işe giren bir öğrencinin cumartesi dahil iş günü toplamı 22, eksik gün sayısı (işe girdiği gün ve sonrasında ki pazar günleri) ise 5 gündür. 22 iş günü ile brüt asgari ücretin günlük tutarı (31,35) çarpılarak 22*31,35=689,70 işçi ücreti hesaplanmalıdır. Bu konuda bana yardımcı olursanız çok sevinirim. Teşekkür ederim.
 
Merhaba Arkadaşlar;

Forma yeni katıldım.

......

Temmuz ayı içerisinde 05.07.2012 tarihinde işe giren bir öğrencinin cumartesi dahil iş günü toplamı 22, eksik gün sayısı (işe girdiği gün ve sonrasında ki pazar günleri) ise 5 gündür. 22 iş günü ile brüt asgari ücretin günlük tutarı (31,35) çarpılarak 22*31,35=689,70 işçi ücreti hesaplanmalıdır. Bu konuda bana yardımcı olursanız çok sevinirim. Teşekkür ederim.

Hoş geldiniz.

Keşke örnek bir dosya ekleseydiniz.

Örnek olması açısından dosyayı inceleyiniz.

A2 --> İşe giriş tarihi
B2 --> Pazar Hariç İşgünü Toplamı
C2 --> Ücreti

C2

=TARİH(YIL(A2);AY(A2)+1;0)-A2+1-TOPLA((HAFTANINGÜNÜ(TARİH(YIL(A2);AY(A2);SATIR(DOLAYLI(GÜN(A2)&":"&GÜN(TARİH(YIL(A2);AY(A2)+1;0)))));2)=7)*1)

Dizi Formüldür. Formül yazıldıktan sonra Ctrl+ÜstOk+Enter tuş kominasyonunu kullanmak gerekir.
 

Ekli dosyalar

Geri
Üst