• DİKKAT

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

hedefteki tarih tatilse

Katılım
4 Haziran 2008
Mesajlar
798
Excel Vers. ve Dili
Excel 2021 TÜRKÇE
hedefteki tarih tatilse bir önceki tatil olmayan tarihi yazsın.örnek dosya ektedir .ilginiz için şimdiden teşekkür ederim.
 

Ekli dosyalar

Selamlar,
Dosyanızı göremem ama anladığım kadarıyla (yanlış anlıyor da olabilirim)
İŞGÜNÜ.ULUSL işlevi ile çözüme gidebilirsiniz.

Örnek :
** G3 : G19 arasında, 2021 yılı Resmi Tatil ve Dini Bayramlar yazıyor olsun.
** Hafta Tatilleri seçimi ise Cumartesi - Pazar olsun... Bu durumda Kod : 0000011
Yani Pazartesiden başlayıp Pazara kadar 7 adet rakam. 0 : Çalışılan gün ve 1 : Çalışılmayan Gün (Hafta Tatili)
** A1 hücresinde Hedef Tarih yazıyor (ya da formülle hesaplanıyor) olsun.

İstediğiniz Hedef Tarih Tatil Gününe denk geliyorsa bir önceki tatil olmayan gün yazılsın..
A1 : 19.07. 2021 yazıyor olsun...
(19.07.2021 Pazartesi Kurban Bayramı Arefe)

Formül :
İŞGÜNÜ.ULUSL(A1;-1;"0000011";G3:G19)

Sonuçta 16.07.2021 Cuma tarihini yazacaktır.
 
A1 de bulunan tarihin, tatil günü olup olmadığının kontrolu de yapılıp,
tatil günü değil ise, Aynısı,
tatil günü ise bir önceki tatil olmayan gün yazılacaksa eğer,
Formül
=EĞER(İŞGÜNÜ.ULUSL(İŞGÜNÜ.ULUSL(A1;-1;"0000011";G3:G19);1;"0000011";G3:G19)=A1;A1;İŞGÜNÜ.ULUSL(A1;-1;"0000011";G3:G19))
şeklinde ya da
=EĞER(VE(HAFTANINGÜNÜ(A1;2)<6;EĞERSAY(G3:G19;A1)=0);A1;İŞGÜNÜ.ULUSL(A1;-1;"0000011";G3:G19))
şeklinde yazılabilir.
 
Mesajlarımda yazdıklarıma yönelik
(Tarihin tatil günü olup olmadığına yönelik kontrol edilmesi şeklinde)
Örnek dokuman hazırladım.. İncelersiniz...

 
Birleştirilmiş hücrelerde tarih azalarak geriye doğru mu gidecek?

Bir de başlangıç tarihi de hafta sonu (Cumartesi-Pazar) ise o tarihte iş günü olarak düzeltilecek mi?
 
Birleştirilmiş hücrelerde tarih azalarak geriye doğru mu gidecek?

Bir de başlangıç tarihi de hafta sonu (Cumartesi-Pazar) ise o tarihte iş günü olarak düzeltilecek mi?
birinci sorunuzun cevabı evet
ikinci sorunuzun cevabı cumartesi ve pazar olmayacak diğer bir çalışma günü olacak şekilde
 
Deneyiniz.

C++:
Sub TARIH()
    Dim Alan As Range, X As Date, X_Tarih As Date, Say As Byte
    
    X_Tarih = Date
    
    For Each Alan In Range("E2,H2,K2,O2,U2,AA2,AG2").Cells
        If Say = 7 Then Exit For
        For X = X_Tarih To DateSerial(Year(Date), Month(Date), 1) Step -1
            If Weekday(X, vbMonday) < 6 Then
                Alan.Cells(1.1).Value = X
                Say = Say + 1
                X_Tarih = X - 1
                Exit For
            End If
        Next
    Next

    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Korhan Hocam aşağıdaki gibi bir düzenleme yapyım ve işlem tamam.Size ve "5"" nolu arkadaşa ilginizden dolayı teşekkür ederim.

Sub TARIH()
Dim Alan As Range, X As Date, X_Tarih As Date, Say As Byte

X_Tarih = Date

For Each Alan In Range("E2,H2,K2").Cells
If Say = 7 Then Exit For
For X = X_Tarih To DateSerial(Year(Date), Month(Date), 1) Step -1
If Weekday(X, vbMonday) < 6 Then
Alan.Cells(1.1).Value = X
Say = Say + 1
X_Tarih = X - 1
Exit For
End If
Next
Next

TAR
End Sub


Sub TAR()
Dim Alan As Range, X As Date, X_Tarih As Date, Say As Byte

X_Tarih = Date

For Each Alan In Range("N2,O2,U2,AA2,AG2").Cells
If Say = 7 Then Exit For
For X = X_Tarih To DateSerial(Year(Date), Month(Date), 1) Step -1
If Weekday(X, vbMonday) < 6 Then
Alan.Cells(1.1).Value = X
Say = Say + 1
X_Tarih = X - 1
Exit For
End If
Next
Next

MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Korhan hocam son gönderdiğim makro normalde çalışıyor.Fakat anlamadığım AY değiştiğinde öernek: 01/07/2021 den sonra 30/06/2021 gelmesi gerekiyor fakat 30/06/2021 tatil veya cumartesi pazar olmamasına rağmen 29/06/2021 oluyor.bunu anlayamadım.
 
Döngünün ilk satırını;

For X = X_Tarih To DateSerial(Year(Date), Month(Date), 1) Step -1

Bu şekilde düzenleyip deneyiniz.

For X = X_Tarih To (X_Tarih - 30) Step -1
 
Teşekkürler Korhan Bey işlem tamam.
 
Geri
Üst