Önceki İş Gününü Bulma

Kısa Açıklama

Önceki İş Gününü Bulma isimli başlıkta, ilgili işlemlere dair detaylar yer almaktadır.
Önceki İş Gününü Bulma isimli soruda, bir hücrede yazan tarih baz alınarak bir önceki iş gününün nasıl bulunacağının cevabı aranmaktadır.

Önceki İş Gününü Bulma


Sorumuzda, üstteki tatil tablosu ve yazılı olan tarihlere göre, bir önceki iş günü olan tarihin nasıl yazdırılacağının cevabını aramaktayız.
  • Cevaplar için Excel'in tüm yöntemleri kabul edilir,
  • Sadece sayfadaki yazılı tarihlerden sorumlusunuz, başka seçeneklerin düşünülmesine gerek yoktur,
  • Cevaplar sadece beklenen tarihlerin listelenmesi içindir, farklı eklemeler yapılmamalıdır.
Katılımları beklerim.
 

Ekli dosyalar

Cevap yazan olmadığına göre, ilk başlangıcı ben yapayım.
F3 hücresine, aşağıdaki formül yazmak yeterli olacaktır.
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(1 satır)
Hafta tatili olarak Cumartesi ve Pazar günleri seçilmiştir.
 
Çözüm
Kimsenin alınmasını istemem..
Çünkü bu yazacaklarım Şahsi düşüncelerim
  • Sadece sayfadaki yazılı tarihlerden sorumlusunuz, başka seçeneklerin düşünülmesine gerek yoktur,
  • Cevaplar sadece beklenen tarihlerin listelenmesi içindir, farklı eklemeler yapılmamalıdır.
Katılmıyorum.

Challenge, (otomatik tercüme olarak Meydan Okuma, ama Beyin Fırtınası olarak kullanılmakta bizde. Çünkü Meydan okuma farklı anlam taşımakta bizde) denildiğinde, akla gelebilecek her türlü fikirlerin ele alınması, irdelenmesi ve neticelendirilmesi anlamındadır.

Soruya baktığımızda, soruda, hafta tatili tanımı yapılmamış. O zaman isteyen istediği hafta tatilini alabilir. Almayabilir de.

Farklı eklemelere gelince, bazı özel tarihler vardır. Veya da seçilecek bazı özel şartlara göre, tarih özel olabilir ama listede yoktur.
Örnek verirsek.
Hafta Tatilimiz Pazar ve Pazartesi olsun ki, açılır listeden de seçilebiliyor olsun.
(Aksi takdirde Pazar, Salı seçsek listede yok. Kod tanımlayacağız. Ama, Ekleme YOK.)
Tarihimiz de, 04 Temmuz 2023 olsun. Listede yok tabi ki. Ama eklemek YOK.
Özellikli bir Tarih. Çünkü, 04.07.2023 Salı günüdür. 1 önceki işgününe bakacağız. 03. 07 Pazartesi ama Hafta Tatili. O zaman 02. 07. Pazar. O da hafta tatili.. Ondan önce de 4 gün Bayram var. Geldik 26.06.203 e. O da Pazartesi yani Hafta Tatili. O zaman 25.06.2023 ... Eee o da Pazar ve hafta tatili. Nihayet bulduk. Aradığımız tarih : 24.06.2023 Cumartesi.

Şimdi, bu tarihi ve açıklamasını eklemek güzel olmaz mı?

Ve nihai düşüncem....
Soru şu haliyle bana göre neticesi aranan bir Forum sorusu.
Ve böyle kısıtlamalarla, ASLA Beyin Fırtınası sorusu olamaz...
 
Hocam o vakit siz nasıl arzu ederseniz demekten bir şey düşmez bana :)
Biz ve diğer üyelerimiz de istifade eder.
Bu yazdığımı o vakit daha kullanmıyorum :)

CEvaplarınızı ve farklı bakış açılarınız ile sunacağınız katkıyı heyecanla bekliyorum.
 
Hata dediğiniz hangi tarih?
Hocam 23 Nisan resmi tatil, öncesi de Ramazan Bayramı ve Arefesi..
19/4 doğru tarih olmalı (resme göre)
Eğer benim bulduğum tarih 21/4 ise evet hatalı..
Dosyaya bakmadan yazdım.
 
İŞGÜNÜ ve İŞGÜNÜ.ULUSL
işlevleri , özellikle işgünleri hesaplanması için, Microsoft tarafından yapılmış özel işlevlerdir.
En pratik çözüm bu işlevlerin kullanılması iledir.
Ama,
İŞGÜNÜ.ULUSL işlevi Excel2010 ve sonrasında mevcut.
Yarın, İlk fırsatta Excel 2003 ve 2007 için bir formül yazacağım ki bunda da hafta tatilleri seçmeli olsun.
 
Soruda verilen dosyaya göre,
Bir Önceki İş Gününün bulunmasına yönelik Excel2003 ve üzeri versiyonlar için formülle çözümüm.
F3 hücresine DİZİ Formül olarak yazılıp aşağıya doğru kopyalanır.
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(1 satır)

1 Not :
Formüldeki {6;7} Hafta Tatili olarak Cumartesi ve Pazar anlamındadır.
a - Farklı günler kullanılacaksa { } içerisine, aralara ; koyarak, o günlerin numaraları yazılır. Numaralar Pazartesi 1 olmak üzere, Salı 2, Çarş 3, Perş 4, Cum 5, Cmt 6 ve Pazar 7 şeklindedir. Örnek, Hafta Tatil günleri, Pazartesi , Çarşamba ve Cuma olsun. O halde {1;3;5} yazılmalıdır.
b - Eğer Hafta Tatili yalnızca Perşembe (No.4) ise şu halde {4} yazılır. Ya da direkt olarak 4 yazılabilir.
c - Eğer 7/24 çalışıp sadece Bayramlarda Tatil yapılıyorsa, {0} ya da direkt olarak 0 yazılır. Ya da formülde düzenleme yapılır ve Dizi formül
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(1 satır)
 
@admin,
Eğer mümkünse, 1 sorum olacak.
2 no lu mesajda vermiş olduğunuz formülde, Hafta Tatili Cumartesi ve Pazar.

7/24 çalışıp hafta tatili olmayan ve Tatilleri yalnızca Bayramlarda kullananlar için bu formülde nasıl bir değişiklik yapmalıyım.
 
Evet belki sorunun kapsam dışına çıkıyorum ama,
Bu soruyu özellikle sormuştum.

İŞGÜNÜ.ULUSL işlevinin söz dizimi

İŞGÜNÜ.ULUSL(başlangıç_tarihi ; gün_sayısı ; [hafta_sonu] ; [tatiller])

şeklindedir. Parametrelerde, parametre [ ] parantez içersine alınıyorsa, Parametre Seçimlidir (Opsiyonel) anlamını taşır. Yani, formül yazımında bu parametre yazılmasa da formül çalışacaktır. Çalışacaktır derken, örneğin [tatiller] parametresini yazmadan formüle edersek, tatiller dikkate alınmadan sonuç döndürecektir.

Burada, çoğu kullanıcının yaptığı bir hatayı ele almak için sormuştum soruyu.
[hafta_sonu] parametresini de yazmadan formüle edersek eğer, (bak resimde soldan 2. sonuç) Hafta Tatili kısmı da değerlendirmeye alınmadan sonuç döndürmesi beklenir şeklinde bir yanılgı mevcut.
Örneğimize göre bakarsak, =İŞGÜNÜ.ULUSL(H7;-1;;$B$7:$B$22) formülünde bu parametreyi atladık. Yanılgı olarak, Bekliyoruz ki, hafta tatilleri olmadan değerlendirsin ve sonuç döndürsün.
Oysa ki, Opsiyonel parametrelerdeki davranış, Parametre atlanıldığında, Varsayılan ne ise o değerlendirmeye alınır. Bu işlevin varsayılanı da 1 değeri olup, Hafta Tatili Cumartesi ve Pazar günleridir. Kısaca, Parametreyi atlamakla, parametreye 1 değeri yazmak aynı şeydir.

O halde,
Hafta Tatili kullanmayan ve tatil olarak sadece bayramlarda tatil yapan çalışanlar için 1 önceki işgününü yazacak olursak
[hafta_sonu] parametresine "0000000" değerini yazarak çözüme gidilebilir. Bu şekilde yazım da, bu işlevin bir diğer kullanım şeklidir.
"0000000" : 7 adet 0 ve 1 lerden oluşan değer. 1 ler Tatil, 0 lar işgünü... soldan sağa doğru ilk değer Pzt dir ve sırayla Pazara kadar gider.

R361.webp
 
iyi akşamlar hocalarım
kusura bakmayın rahatsız ediyorum ama kafama takılan bir şey var sizlere onu danışmak istedim
İŞGÜNÜ.ULUSL(Tarih:-Gün) fonksiyonu girilen tarihten önceki n. iş günü hangi tarihi gösteriyor o işe yarıyor değil mi
resmi tatiller, cumartesi pazarlar çıkıyor geriye kalanlar toplanıyor

1695070394831.webp

mesela A12 hücresindeki tarih 24.04.2025 Perşembe var, İŞGÜNÜ.ULUSL formülünü kullanarak ilk iş gününü bulmaya çalışıyorum
24 Nisan 2025 Perşembe tarihinden önceki ilk iş gününü bulmak için formülü =İŞGÜNÜ.ULUSL(A12:-1) yazdığımda 23 Nisan 2025 Çarşamba'yı veriyor. formülü yanlış mı yorumluyorum?
 
@halily
Aynen öyle, 1 önceki işgünü oluyor ama dikkat edilmesi gereken nokta, hafta tatili kısmı.
Formülün üçüncü unsuru hafta tatili gününü belirtiyor.
-- BOŞ veya 1 Cumartesi, Pazar,
-- 2 Pazar, Pazartesi,.....
-- 3 Pazartesi, Salı
.....gibi.

Sn. @52779 'un son mesajını dikkatlice incelersiniz.

Formülün son değişkeni ise TATİLLER kısmı (bizim açımızdan milli-dini resmi tatil günleri).

1695072716421.webp
 
@halily Hocam,
İŞGÜNÜ.ULUSL(başlangıç_tarihi ; gün_sayısı ; [hafta_sonu] ; [tatiller])
söz diziminde,
siz Hafta Tatili ve Tatiller parametrelerini atlayarak (yazmayarak)
1 - Tatilleri değerlendirme dışı tutuyorsunuz. (Çünkü bunun varsayılanı yoktur. Tatiller yazılınca vardır, atlanırsa yoktur)
2 - HaftaTatili parametresini de yazmıyorsunuz. Bu parametreyi atladığınızda, bu parametrenin Varsayılanı 1 dir. Yani Hafta Tatili Cumartesi ve Pazar
(Varsayılanı anlamak / görebilmek için, @Ömer BARAN Hocamın mesajına baktığınızda göreceğiniz gibi, formül çubuğunda iken, parametre açılır listesindeki en üstteki (yani 1.) değer olmaktadır)

Sizin yazdığınız formülün anlamı ise : Cumartesi Pazar Tatil olmak kaydıyla, Resmi Tatiller değerlendirmeye alınmadan 1 önceki işgünü...

Diğer taraftan
Hafta Tatili Parametresini atladığınızda (ki varsayılan Cumartesi Pazar Hafta Tatili kriteri ile işlem görecektir)

Yani söz dizimine göre
İŞGÜNÜ.ULUSL(başlangıç_tarihi ; gün_sayısı ; ; [tatiller])
şeklinde olacak ve bu da
İŞGÜNÜ (başlangıç_tarihi ; gün_sayısı ; [tatiller])
işleviyle AYNI olacaktır.

Diğer bir ifadeyle,
İŞGÜNÜ.ULUSL(A1;-1) = İŞGÜNÜ(A1;-1)
olacaktır.

Kısaca, her iki işlev arasındaki tek fark Hafta Tatili parametresidir. İŞGÜNÜ.ULUSL işlevinde bu parametreyi atladığınızda İŞGÜNÜ.ULUSL = İŞGÜNÜ olacaktır.
 
Formülün son değişkeni ise TATİLLER kısmı (bizim açımızdan milli-dini resmi tatil günleri).
Evet doğru.
Ama yine de bir ilave yapmak isterim.
Tatilleri sadece Bayram olarak ele almamak gerekir. Çalışılmayan günler demek daha doğru olacaktır.
Örnek verecek olursam
** Bazı şirketler, Ağustos aylarını komple çalışmaya kapatır, personel komple yıllık izin kullanır.
Bu şirkete göre Ağustos ayında İŞGÜNÜ yoktur.
Tatil listesine Ağustos ayının günleri ilave edilmelidir.
 
@Ömer BARAN ve @52779 hocalarım çok teşekkür ederim
son parametreyi tatiller hariç, hesaba katılmayacak tarihler olarak yorumlamışım
nasıl böyle yorumladım onu da anlayabilmiş değilim))
galiba formül tatilleri hesaplamaya katmıyor kısmını okuyunca gerisine dikkat etmemişim
tekrar teşekkür ederim
iyi akşamlar
 
Hep birlikte öğrenmeye, şüpheci bakmaya, irdelemeye devam.
Katkılarınızı her zaman bekleriz @halily .

Birimizin fark etmediği bir detayı diğerimiz görecek ve yazacak, bilgi artacak.
Akılda kalması dahi önemli değil, kafamızda bir soru işaret kalsa yeter.
 
Benzer Konular Popüler İçerikler Daha Fazlası
Geri
Üst