Merhabalar.
Biraz teorik açıklama yapayım dedim, faydalı olabilir ve umarım yanlış bir şeyler yazmam.
Malum bizim TARİH dediğimiz şey MsExcel açısından bir SAYIdır, hücrenin biçimine göre de SAYIların TARİH gibi görünmesi sağlanır.
Örneğin bir hücreye 1 yazdığınızda hücre biçimi TARİH olarak ayarlanmışsa, excel bunu otomatik olarak 01.01.1900 olarak, 0 yazmışsanız 00.00.1900 olarak değiştirir.
Ms.Excel açısından tarih verileri esas olarak 01.01.1900'den başlayıp 1 artarak devam eden SAYIlardır (1904 tarih sistemi diye bir şey daha var o ayrı mevzu).
Örneğin bir hücreye =BUGÜN() formülü uygulayıp hücrenin biçimini SAYI veya GENEL şeklinde ayarlarsanızgöreceğiniz şey 44202 sayısıdır. Bu da 01.01.1900'den bu yana KAÇ GÜN geçtiğini gösterir, yani excel için tarih işlemlerinde 1 sayısı GÜN anlamına gelir.
MAKROda TARİH Mİ? : A1'e 1 yazılıp, makro kodu ile MsgBox IsDate(ActiveSheet.[A1]) gibi bir kod satırı oluşturulursa,
hücre SAYI/GENEL olarak biçimlendirilmişse FALSE, tarih olarak biçimlendirilmişse TRUE değerini döndürür.
FORMÜLde TARİH : Bildiğim kadarıyla Excel'in yerleşik işlevlerinde =TEKMİ(), =ÇİFTMİ(), =EMETİNSE() =ESAYIYSA() gibi
=ETARİHSE() veya =ETARİHMİ() gibi bir işlev yok malesef.
Hücrede POZİTİF bir SAYISAL bir veri varsa ve bu sayı 2958466 'dan küçükse (Excel hücresine şu anda en fazla 31.12.9999 tarihi yazılabilir ve verdiğim sayı bu tarihi temsil ediyor, tıpkı 44202 sayısının bugünün tarihini gösterdiği gibi) biçimlendirme ister SAYI/GENEL, isterse de TARİH olsun, bu hücreye atıf yapacak =YIL(...) veya =AY(...) ya da =GÜN(...) formülü SAYISAL (tarihin günü, ayı veya yılı) sonuç verir.
Negatif veya, belirttiğim sayıdan büyük bir değer için ise #SAYI! hatasını verir.
Ezcümle diyeceğim şudur;
hücrede POZİTİF ve 2958466'dan küçük bir sayı varsa bu sayının TARİH mi SAYI mı olduğunu formülle tespit etmeniz güç.
AY/YIL/GÜN formülleri bu işi görmez. SAYInın ondalıklı olması da sonucu değiştirmez, ondalık kısmı SAAT/DAKİKA anlamına gelir.
Hatta TARİH görünen hücrede, gün/ay/yıl ayracı neyse (nokta veya kesme işareti) =BUL(".";....) veya =BUL("/";....) işlevleri de sonuç vermez. Hücrede bu noktalama işaretini var olarak görseniz de gerçekte yoktur ve hücre içeriği sadece SAYIdır. Çünkü TARİH bir SAYIdır.
.