Bu yazımızda, hafta tatili olarak Cumartesi ve Pazar günleri dahil veya hariç, belirtilen tarihte tatil olup olmadığını kontrol etmek için Kullanıcı Tanımlı Fonksiyon (UDF) oluşturacağız.
Bu örnek için ham veriler A sütununda sırayla tarihlerden oluşur. Cumartesi veya Pazar hafta tatili dahil veya hariç olmak üzere verilen tarihte tatil olup olmadığını bulacağız.
Tatil tarihlerini “Tatiller” sayfasında A sütununda belirtmiştik.
Verilen tarihteki tatil durumunu bulmak için “IsHoliday” özel fonksiyonunu oluşturduk.
Fonksiyonun sözdizimi
Tatil(Tarih, Cumartesi dahil, Pazar dahil)
InclSaturdays ve InclSundays isteğe bağlı parametrelerdir. Varsayılan olarak, her ikisinin de TRUE değeri vardır. Cumartesi ve Pazar gününü iş günü olarak değiştirmek için ilgili parametrenin değerini YANLIŞ olarak değiştirin.
Cumartesiyi iş günü olarak kabul ederek A9 hücresindeki tarihin tatil durumunu bulmak için C9 hücresinde aşağıdaki formülü kullandık.
=Tatil(A9,YANLIŞ)
Cumartesi ve Pazar günleri iş günü olarak kabul ederek A9 hücresindeki tarihin tatil durumunu bulmak için D9 hücresinde aşağıdaki formülü kullandık.
=Tatil(A9,YANLIŞ,YANLIŞ)
Cumartesi ve Pazar günleri izin günleri olarak kabul ederek A9 hücresindeki tarihin tatil durumunu bulmak için E9 hücresinde aşağıdaki formülü kullandık.
=Tatil(A9)
Mantıksal açıklama
“IsHoliday” fonksiyonunda öncelikle parametrede verilen tarihin belirtilen tatil listesinde olup olmadığını kontrol ediyoruz. Tatil listesinde tarih varsa, çıktı olarak “Tatil”i döndürün. Tatil listesinde tarih yoksa, verilen tarihin Cumartesi mi Pazar mı olduğunu kontrol edin. Sağlanan giriş parametresine bağlı olarak, tatil olarak bir Cumartesi veya Pazar gününün dahil edilip edilmeyeceğini kontrol edin.
Kod açıklaması
Set RngFind = Çalışma Sayfaları("Tatiller").Columns(1).Find(LngDate)
Yukarıdaki kod, tatil listesinde belirtilen tarihin bulunduğu yeri bulmak için kullanılır.
Eğer RngFind Hiçbir Şey Değilse
Tamam = "Tatil"
Sonuncuya Git
Bitir
Yukarıdaki kod, tatil listesinde belirtilen tarihin olup olmadığını kontrol etmek için kullanılır. Koşul TRUE değerini döndürürse, özel işlev çıktı olarak "Holiday" değerini döndürür ve kontrol UDF'nin son satırına kayar.
Lütfen kod için aşağıdan takip edin
Option Explicit Function IsHoliday(LngDate As Date, Opsiyonel InclSaturdays As Boolean = True, _ Opsiyonel InclSundays As Boolean = True) 'Değişkenleri bildirme Dim RngFind As Range Dim OK As String 'Değişkeni başlatılıyor OK = "Çalışma günü" Hata Devam Etme Sırasında ' Tatiller sayfasında belirtilen tarihin bulunduğu yeri bulma Set RngFind = Worksheets("Holidays").Columns(1).Find(LngDate) On Error GoTo 0 'Belirtilen tarihte tatil olup olmadığının kontrol edilmesi If Not RngFind Is Nothing O zaman Tamam = "Tatil" Son Sona Git Eğer 'Belirli tarihte Cumartesi olup olmadığı kontrol ediliyorsa Cumartesi dahil ise Sonra Hafta içi(LngDate, 2) = 6 O zaman Tamam = "Tatil" Son Sona Git Eğer Bitiyorsa 'Pazar olup olmadığı kontrol ediliyor verilen tarih Pazar Dahil ise O zaman Hafta içi(LngDate, 2) = 7 O zaman Tamam = "Tatil" Sonsa Sonsa Son: Tatil = Tamam Bitiş Fonksiyonu
Bu blogu beğendiyseniz, Facebook'ta arkadaşlarınızla paylaşın. Ayrıca bizi Twitter ve Facebook'ta da takip edebilirsiniz.
Sizden haber almayı çok isteriz, işimizi nasıl geliştirebileceğimizi ve sizin için nasıl daha iyi hale getirebileceğimizi bize bildirin. E-posta sitesinde bize yazın