ay içerisinde mesai günleri ve tatil günlerinin ayrılması...

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Alternatif olarak makrolu çözümü ekteki dosyada bulabilirsiniz. Umarım faydası olur.
 
Katılım
5 Nisan 2006
Mesajlar
449
Excel Vers. ve Dili
Office Excel 2003
TÜRKÇE
Sn. Necdet Bey,

biraz uğraştırdım sizi ama, mükemmel oldu.. çok basit bir şey belki ama benim işimi çok kolaylaştıracak..:hihoho: :hihoho: :hihoho:

elinize, emeğinize sağlık. çok teşekkür ediyorum.

saygılar.
Sayın Selçuk Bey, bu dosyayı bulamıyorum. Rica etsem son haliyle tekrar ekleyebilir misiniz? Saygılarımla....
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Dosya silindiği için içeriğini tam olarak hatırlamıyorum ama mesajlardan anladığım kadarıyla yeni bir örnek dosya hazırladım.

A2 ve B2 hücrelerinden yapalıcak seçime göre ilgili aya ait iş günleri D-E sütunlarına, tatil günleride F-G sütunlarına listelenmektedir.

Umarım faydası olur.


Kullanılan kod; (Sayfanın kod bölümüne uygulayınız.)

Kod:
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim İLK_GÜN As Date, SON_GÜN As Date, TARİH As Date
    Dim BUL As Range, SATIR As Long
 
    If Intersect(Target, [A2:B2]) Is Nothing Then Exit Sub
 
    If Cells(Target.Row, "A") <> "" And Cells(Target.Row, "B") <> "" Then
 
    Range("D2:G65536").ClearContents
 
    İLK_GÜN = DateSerial(Cells(Target.Row, "B"), Cells(Target.Row, "A"), 1)
    SON_GÜN = DateSerial(Cells(Target.Row, "B"), Cells(Target.Row, "A") + 1, 0)
 
    For TARİH = İLK_GÜN To SON_GÜN
        Set BUL = Sheets("TATİLLER").Range("F:F").Find(TARİH, [COLOR=red]LookAt:=xlWhole[/COLOR])
        If Not BUL Is Nothing Then
        SATIR = Cells(65536, "F").End(3).Row + 1
        Cells(SATIR, "F") = TARİH
        Cells(SATIR, "G") = Sheets("TATİLLER").Cells(BUL.Row, "D") & " - " & Sheets("TATİLLER").Cells(BUL.Row, "E")
        Else
        If Weekday(TARİH, vbMonday) > 5 Then
        SATIR = Cells(65536, "F").End(3).Row + 1
        Cells(SATIR, "F") = TARİH
        Cells(SATIR, "G") = Format(TARİH, "dddd")
        Else
 
        SATIR = Cells(65536, "D").End(3).Row + 1
        Cells(SATIR, "D") = TARİH
        Cells(SATIR, "E") = Format(TARİH, "dddd")
        End If
        End If
    Next
 
    Set BUL = Nothing
    Range("D:G").EntireColumn.AutoFit
 
    End If
End Sub
 

Ekli dosyalar

Katılım
9 Temmuz 2004
Mesajlar
425
Excel Vers. ve Dili
Office 2007 Tr & Office 2019 Tr
Sayın Korhan Ayhan
Dosyanızda işgünlerini ayıran makroların biryerinde bir hata var ama ben bulamadım. Şöyleki; 2009 yılının kurban bayramı hem 1 inci ayda hemde 11 inci ayda görünüyor. Tekrar bir bakabilirmisiniz acaba. Saygılar.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sn. m.gur,

Belirttiğiniz problemi düzelttim. Üstteki mesajımda kodda yaptığım değişikliği kırmızı renkle belirttim. Dosyanın güncel halini kullanabilirsiniz.
 
Katılım
9 Temmuz 2004
Mesajlar
425
Excel Vers. ve Dili
Office 2007 Tr & Office 2019 Tr
Sayın Korhan Aydın
Çok teşekkür ederim. Sorunsuz çalışıyor. Hayırlı bayramlar.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,767
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
alternatif olarak bir dosyada ben koydum tek yapılması gereken SpinButton1 komut düğmesini tıklamak
 

Ekli dosyalar

Son düzenleme:
Katılım
9 Temmuz 2004
Mesajlar
425
Excel Vers. ve Dili
Office 2007 Tr & Office 2019 Tr
Sayın Halit3
Çok güzel bir çalışma olmuş kutlarım sizi.
 
Üst