• DİKKAT

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

Ayın son işgününü bulma.

sward175

Özel Üye
Katılım
4 Şubat 2011
Mesajlar
1,196
Excel Vers. ve Dili
Excel Vers. ve Dili:
Microsoft Office Professional Plus 2016
Yılın aylarını A2' den aşağı doğru yazalım ve karşılarına o ayın son iş gününü hesaplayalım.
Yardımlarınız için teşekkür ederim.
sward175
 

Ekli dosyalar

Deneyiniz.

C++:
=ARA(2;1/(HAFTANINGÜNÜ(SATIR(DOLAYLI(A2&":"&SERİAY(A2;0)));2)<6);SATIR(DOLAYLI(A2&":"&SERİAY(A2;0))))
 
Sayın, Korhan Ayhan,
Teşekkür ederim,
İsteğim Cumartesi, Pazar, Ulusal tatil ve Dini tatil günlerini de hesaplaması.
Bu şeklide formül yazabilir miyiz ?
Saygılarımla,
sward175
 
Alternatif:

=EĞER(HAFTANINGÜNÜ(SERİAY(A2;0);2)>5;SERİAY(A2;0)-ARA(HAFTANINGÜNÜ(SERİAY(A2;0);2);{6;7};{1;2});SERİAY(A2;0))
 
Bu durumda ilgili yıllara ait tatil günlerini bir yerde yazmanız gerekiyor.
 
Sayın, Korhan Ayhan,
Ekli dosyaya tatil sayfası ekledim.
Yardımcı olabilirseniz sevinirim.
saygılarımla,
sward175
 

Ekli dosyalar

Deneyiniz.

Tatiller isimli sayfanın A2:A550 hücre aralığını Tatiller olarak adlandırdım.

C++:
=ARA(2;1/((HAFTANINGÜNÜ(SATIR(DOLAYLI(A2&":"&SERİAY(A2;0)));2)<6)*EHATALIYSA(KAÇINCI(SATIR(DOLAYLI(A2&":"&SERİAY(A2;0)));Tatiller;0)));SATIR(DOLAYLI(A2&":"&SERİAY(A2;0))))
 
Korhan Bey,
Çok teşekkür ederim,
Sağlıklı ve huzurlu nice güzel günler dilerim.
sward175
 
Selamlar,
Dosyanızı göremem.. Sorunuzdan ve cevap olarak yazılan formüllerden hareketle

İŞGÜNÜ.ULUSL işlevi ile alternatif çözüm olarak

=İŞGÜNÜ.ULUSL(SERİAY(A2;0)+1;-1;1;Tatiller!$A$2:$A$550)

Not : 1 : hafta tatili olarak Cumartesi ve Pazar günlerini belirtmektedir.

Konuya dair bir örnek hazırlamıştım... İncelersiniz...

 
Sayın, 52779
Teşekkür ediyorum,
Sağlıklı, huzurlu nice güzel günlere.
 
Alternatif olarak makrolu çözüm için aşağıdaki makroyu deneyebilirsiniz:

PHP:
Sub tatil()
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Tatiller")
son = s1.Cells(Rows.Count, "A").End(3).Row
sonT = s2.Cells(Rows.Count, "A").End(3).Row
s1.Range("B2:B" & son).ClearContents
For ay = 2 To son
    For tarih = WorksheetFunction.EoMonth(s1.Cells(ay, "A"), 0) To s1.Cells(ay, "A") Step -1
        If Weekday(tarih, 2) > 5 Then
            GoTo 20
        ElseIf WorksheetFunction.CountIf(s2.Range("A1:A" & sonT), tarih) = 0 Then
            s1.Cells(ay, "B") = tarih
            GoTo 10
        ElseIf WorksheetFunction.VLookup(tarih * 1, s2.Range("A1:D" & sonT), 3, 0) = "1/2 GÜN" Then
            s1.Cells(ay, "B") = tarih
            GoTo 10
        End If
20:
    Next
10:
Next
End Sub
 
Sayın, YUSUF44,
Çok teşekkür ederim.
Sağlıklı, huzurlu nice güzel günleriniz olsun.
sward175
 
Geri
Üst