Veri' nin tarih formatında mı?

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
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....
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
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.
.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
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.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
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Ş))
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
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.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
Excel Vers. ve Dili
Office 2013 İngilizce
İ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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,312
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
Excel Vers. ve Dili
Office 2013 İngilizce
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.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
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)
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İ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....
.

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/


.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
Excel Vers. ve Dili
Office 2013 İngilizce
.

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.
 
Üst