• DİKKAT

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

Veri' nin tarih formatında mı?

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,201
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Bir verinin Veri' nin tarih formatında olup olmadığın kontrolünün fonksiyon ile nasıl yapabiliriz?
Sonuç "Evet" yada "Hayır"

örnek:
"162.12.2016" tarih formatında değil; Sonuç "Hayır"

"16.12.2016" tarih formatında; Sonuç "Evet"


ETarih ("162.12.2016") gibi....
 
Merhaba.
Yanlış anlamadıysam, aklıma ilk gelen şudur.

Tarihler bir sayıya denk düştüğüne (01.01.1900'den itibaren kaçıncı gün olduğunu gösterdiğine) göre;
basitçe =ESAYIYSA(A1) formülünün sonucu, 162.12.2016 için YANLIŞ, 16.12.2016 için DOĞRU olmaz mı?

Verinin yazıldığı hücre önce METİN olarak biçimlenmiş, sonra aralara . (nokta) koyularak elle yazılmışsa
veya başka kaynaktan METİN olarak alınıyorsa yine basit düşünüp yukarıdaki formülün
parantez içini A1+0 olarak değiştirmek yeterli olur sanırım.
.
 
Vba'da IsDate(.....) Şeklinde kontrol edilebiliyor ama Sayın Ömer Baran'ın da belirttiği gibi tarihler Excel açısından sayının farklı biçimlerinden biri olduğundan formülle kontrol etmek zor olur. Örneğin bir hücreye 1 diğer hücreye 01.01.1900 yazıp eşit olup olmadıklarını kontrol ettiğinizde eşit olduğunu görürsünüz. Ya da bu iki hücreyi toplarsanız hücrenin biçimine göre 2 ya da 02.01.1900 ya da 200% ya da farklı biçimde görünebilir.
 
Bir de aşağıdaki şekilde düşünülebilir.
.
Kod:
=VE(YADA(UZUNLUK(A1)-UZUNLUK(YERİNEKOY(A1;".";""))=2;UZUNLUK(A1)-UZUNLUK(YERİNEKOY(A1;".";""))=0);EĞERHATA(A1+0>0;YANLIŞ))
 
Aşağıdaki kodların ikisi de A sütunundaki son dolu hücreye kadar tarih kontrolü yapar. İlk kod B sütununa DOĞRU ya da YANLIŞ yazar, ikinci kod ise Evet ya da Hayır yazar:

Kod:
Sub tarihkontrol1()
For i = 1 To Cells(Rows.Count, "A").End(3).Row
    Cells(i, "B") = IsDate(Cells(i, "A"))
Next
End Sub
Kod:
Sub tarihkontrol2()
For i = 1 To Cells(Rows.Count, "A").End(3).Row
    If IsDate(Cells(i, "A")) = True Then
        Cells(i, "B") = "Evet"
    Else
        Cells(i, "B") = "Hayır"
    End If
Next
End Sub

Bu mantıkla sayfa olaylarına da bağlanarak kod hazırlanabilir. Hücreye veri girildiğinde başka bir hücreye ya da msgbox olarak uyarı verilebilir vs.
 
İlgilenen tüm arkadaşlara teşekkürler,
Buradan anladığım bu konuda yerleşik bir fonksiyon bulunmuyor. "Ancak kullanıcı tanımlı" fonksiyon oluşturmamız gerekmekte;

Aşağıda bu şekilde bir kod düzenledim.
Kod:
Private Function TarihFormat(veri As Variant)

    If IsDate(veri) = True Then
        TarihFormat = "Evet"
    Else
       TarihFormat = "Hayır"
    End If

End Function

iyi çalışmalar.
 
Tamer Bey,

Ekteki gibi deneyiniz.

Kod:
Function Tarihmi(Veri As Variant)
    On Error GoTo Son
    Application.Volatile True
    Tarihmi = IIf(IsDate(CDate(CLng(Veri))), "Evet", "Hayır"): Exit Function
Son: Tarihmi = "Hayır"
End Function
 
Tamer Bey,

Ekteki gibi deneyiniz.

Kod:
Function Tarihmi(Veri As Variant)
    On Error GoTo Son
    Application.Volatile True
    Tarihmi = IIf(IsDate(CDate(CLng(Veri))), "Evet", "Hayır"): Exit Function
Son: Tarihmi = "Hayır"
End Function

Sn Korhan verdiğiniz kodda "04.08.2016" denedim; cevap HAYIR olarak geliyor.


iyi Çalışmalar.
 
Eğer belirttiğiniz gibi

Kod:
=tarihmi("04/08/2016")

şeklinde yaptıysanız Hayrı demesi normal çünkü tırnak işaretleri sayıları metne çevirir. Bu tarihi herhangi bir hücreye tarih olarak girerseniz doğru sonuç verecektir. Ya da aşağıdaki gibi de olur:

Kod:
=tarihmi("04/08/2016"*1)
 
Merhaba,
Bir verinin Veri' nin tarih formatında olup olmadığın kontrolünün fonksiyon ile nasıl yapabiliriz?
Sonuç "Evet" yada "Hayır"

örnek:
"162.12.2016" tarih formatında değil; Sonuç "Hayır"

"16.12.2016" tarih formatında; Sonuç "Evet"


ETarih ("162.12.2016") gibi....

.

Veri A1 hücresinde ise;

İngilizce:
Kod:
=CELL("format";A1)="D1"

Türkçe:
Kod:
=HÜCRE("biçim";A1)="D1"


sonucu, Doğru yada Yanlış döndürür.

Buradaki dosyayı inceleyin.

http://www.excelgurusu.com/cell-hucre-fonksiyonu/


.
 
.

Veri A1 hücresinde ise;

Türkçe:
Kod:
=HÜCRE("biçim";A1)="D1"


sonucu, Doğru yada Yanlış döndürür.


.

Kod:
=EĞER(HÜCRE("biçim";A1)="G1";1;0)

Sn Serdar çok teşekkürler,
tam da bunu arıyordum.


iyi çalışmalar.
 
Geri
Üst