• DİKKAT

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

Tarih Formati ve Degerin Tarih Olup Olmadigini Kontrol Etmek

Katılım
21 Kasım 2012
Mesajlar
172
Excel Vers. ve Dili
2013 - TR & EN
Merhabalar, yeni bir soru ile tekrardan konu acmak zorunda kaldim. Bu sefer karsilastigim sorun icin dosya eklememe gerek olmadigini dusundum. 2 Sorum olacak tarihlerle alakali. Benim tarih formatlarim AY.GUN.YIL ("/" isareti ile degil) seklinde her zaman istedigim gibi. Ben A1 hucresine 07/18/2015 ("/" isareti ile) yazip enter'a bastigimda 07.18.2015 olarak gorunuyor hucrede. Bunu kendim istege uyarlanmis olarak tarih formatina mm.dd.yy yazdim oldu. Buraya kadar s1k1nti yok fakat ben ben ne zaman ki ayni hucreye 07.18.2015 ("." isareti ile) yazacak olursam yine hucrede nokta isareti ile sonuc gorunuyor fakat bu hucrenin isleme tabi tutuldugu ve tarih olarak algilanmasi gereken baska hucrede "DEGER" hatasini aliyorum. bu nedenle tarihi el ile yazdigim hucreye ben arada "/" isareti DEGIL , "." isaretinin oldugu formatta YAZIP o hucrenin tarih olarak algilanmasini istiyorum.

Ikinci sorum ise bir hucreye yazilan degerin tarih olup olmadigini nasil kontrol edebiliriz? ben A1 hucresine tarih degeri diye girdigim deger tarih degil ise ben B1 hucresine oyle bir formul girmeliyim ki bana "Check Date" yazsin.

cok tesekkur ederim yardimlariniz icin.
 
Merhaba.

Hücre değerini matematiksel işleme tabi tutarak anlayabilirsiniz.
Kod:
=EĞERHATA(EĞER(A1+0=A1;"";"Check Date");"Check Date")
formülünün sonucu A1'deki değer tarih ise BOŞ, değilse "Check Date" olarak dönecektir.
 
Merhaba Omer baran, cok zekice ve bu kisacik cozumden dolayi cok tesekkur ederim. ise yaradi gercekten. peki bu formatla ilgili sordugum soruyla ilgili bir bilgin var mi acaba? Yazdigim tarih "/" isareti ile yazildiginda ancak o zaman bana istege uyarlanmis sekmesinde belirledigim "." isareti ile hucrede gosteriyor ve tarih olarak algiliyor. fakat ne zaman ki ben "/" isareti ile degil de bizzat el ile yazarken "." isaretini kullanirsam, istege uyarlanmis formatta belirledigim "." isareti ile gosteriyor fakat tarih olarak algilanmiyor..
 
Tekrar merhaba.
Aşağıdaki formülü, gizleyeceğiniz bir hücreye uygulayıp, A1 hücresine yapacağınız hücre başvurularını bu formülün uygulandığı hücreye yaparak hep tarih olarak işlem yapabilirsiniz.
A1 hücresine ister nokta isterseniz de kesme işaretiyle veri girin aşağıdaki formül sonucu bunu tarihe dönüştürecektir.
Kod:
=TARİH(PARÇAAL(YERİNEKOY(A1;".";"/");BUL("/";YERİNEKOY(A1;".";"/");BUL("/";YERİNEKOY(A1;".";"/");1)+1)+1;UZUNLUK(YERİNEKOY(A1;".";"/"))-BUL("/";YERİNEKOY(A1;".";"/");BUL("/";YERİNEKOY(A1;".";"/");1)+1));SOLDAN(YERİNEKOY(A1;".";"/");BUL("/";YERİNEKOY(A1;".";"/");1)-1);PARÇAAL(YERİNEKOY(A1;".";"/");BUL("/";YERİNEKOY(A1;".";"/");1)+1;BUL("/";YERİNEKOY(A1;".";"/");BUL("/";YERİNEKOY(A1;".";"/");1)+1)-BUL("/";YERİNEKOY(A1;".";"/");1)-1))
İsterseniz basit makro kod ile yukarıdaki formül sonucunu değer olarak A1 hücresine yazdırabilirsiniz, hatta bu kodu A1 hücresi değiştiğinde (veri yazıldığında otomatik olarak) çalışır şekilde yaparsanız, işlem siz veriyi yazar yazmaz gerçekleşecek ve sanki bu işlem hiç yokmuş gibi çalışabilirsiniz.
 
Omer.Baran cok cok tesekkur ederim yanitin icin. formul calisiyor cok guzel.. simdi el ile girdigim tarihlerin hucre sayisi sadece A1 ile kisitli olmadigindan dolayi bu formulu A1den A2000'e kadar kopyalamam gerekecek sanirim yanlis anlamadiysam. bir de bu bolgesel ayarlardan degistirme vardi diye hatirliyorum ama cok da karistirmak istemedim geri donusu olmayan bir yola girmemek icin :)) cok tesekkur ederim tekrardan yanitlarin icin. problemim hizli bir sekilde cozume ulasti.
 
Estağfurullah, ihtiyaç karşılanmışsa mesele yok.

Evet tüm sütuna uygulanması gerekir.

Mevcut formülü bir EĞER işlevi parantezine alıp, A sütunu dolu ise bu formül, boşsa BOŞ şeklinde uygularsınız artık.

Ayrıca; bir önceki cevabımda yazdığım gibi kod işinden pek anlamıyorum ama, a sütunundaki tüm dolu hücreler için (A sütununa her veri girildiğinde otomatik olarak çalışacak şekilde) çalışacak bir kod ile yukarıdaki formül otomatik olarak başka bir sütunda uygulanıp formül sonucu A sütunundaki hücrelere değer olarak yazdırılabilir.
Bu işlem yapılırsa gözle farketme olasılığınız bile çok düşük olur.
 
Omer.Baran kucuk bir sorun ile karsilastim su formulu uygularken > =EĞERHATA(EĞER(A1+0=A1;"";"Check Date");"Check Date") simdi bu formulde eger A1 e girilen deger tarih ise "" donduruyor demistin. Fakat benim asil dosyamda bos dondurmesi yerine oraya uzun bir dizi formulu gelecek ve bu dizi formulu hatali ciktiginda bana yine ayni sekilde "Check Date" sonucu veriyor. bunun onune nasil gecebilirim ? tesekkur ederim simdiden.
 
Merhaba.
Yanlış anlamadıysam, formülü;
Kod:
=EĞERHATA(EĞER(A1+0=A1;[B][COLOR="Red"]dizi formülünüz[/COLOR][/B];"Check Date");"Check Date")
şeklinde değiştirince istediğinizin olması lazım.
 
Merhaba,
Evet aynen bu sekilde yazdigimda formulu, dizi formulumde baska tarih tablosundan INDIS ile en son yazilan tarihi deger olarak alarak islem yapan kisimda hata verdiginde yine bana Check Date sonucunu cikariyor her ne kadar ben dizi formulunde eger ile yanlis oldugunda hucreye verilecek degeri belirlemis olsam da.
 
Diuzi formulum hata verdiginde kendi belirledigim deger " Check Cycle" aslinda. Fakat ilk orjinal sorumda hata verdiginde "Check Date" sonucunu cikarmasini istiyordum. simdi dizi formulu bu egerhata formulu icinde oldugundan dolayi benim kendi dizi formulum hata verse de vermese de, sonuc hep "Check Date" olarak donuyor ne zaman ki =EĞERHATA(EĞER(A1+0=A1;Dizi formulum;"Check Date");"Check Date") formulu hata verirse. soyle bir sey yapmak mumkun mu > eger degilse de ben "Check Date and Cycle" olarak yazdiricam bu ayrintinin uzerinde durmayip. Sunu yapmak mumkun mu mesela, ben bu orjinal paylastigin formulde (=EĞERHATA(EĞER(A1+0=A1;"";"Check Date");"Check Date")) bu formulde bosluk yerine hic islem yapmadan direkt bir sonraki adima yani benim orjinal dizi formulume gecis yapmak mumkun mu? pek dusuk bir ihtimal benim bildigim kadariyla ama bilmedigim bir sey olabilir diye bir de bunu sorayim.
 
Sayın haletinizi (rumuzla hitabı hiç hazzetmem ama mecburen, genellikle ad ya da soyadla hitap ederim) en genel koşuldan en özele doğru formül oluşturmak lazım.

Tabi ilk kararın, "olumsuz" sonuca göre mi yoksa "olumlu" sonuca göre mi formül kurmak doğru olur konusunda verilmesi lazım.

Ayrıca; önce dizi formülünü sonra diğerini kullanınca sonuç alamadınız mı acaba?
 
Daha önce gönderdiğim uzun formül yerine aşağıdakini uygularsanız;
Hücreye ister " . " ile ve isterseniz de " / " ile olsun, yıl kısmı ister 2 karakter
(2015 yerine 15 şeklinde) isterseniz 4 karakter olarak yazılmış olursa olsun AY GÜN YIL
sıralaması ile veri yapılıyorsa hatayı yok edip normal tarih elde edebilirsiniz.

Bence HATA formülleri yerine hatayı en baştan giderip bu kontrollere de gerek
bırakmamak bir yöntem olabilir.

Aşağıdaki formülün işe yaraması için tek koşul veri girilecek hücrenin (A1 hücresi) biçiminin
METİN olarak ayarlandıktan sonra veri girilmesidir, şayet verilerinizi başka kaynaktan
kopyala-yapıştır yöntemiyle alıyorsanız A sütununa doğrudan yapıştır yerine
ÖZEL YAPIŞTIR->DEĞERLERİ şeklinde veri almanız gerekir.
Kod:
=TARİH(EĞER((0+PARÇAAL(A1;(EĞERHATA(BUL("/";A1;(EĞERHATA(BUL("/";A1;1);BUL(".";A1;1)))+1);BUL(".";A1;(EĞERHATA(BUL("/";A1;1);BUL(".";A1;1)))+1)))+1;1))=2;0;2000)+PARÇAAL(A1;(EĞERHATA(BUL("/";A1;(EĞERHATA(BUL("/";A1;1);BUL(".";A1;1)))+1);BUL(".";A1;(EĞERHATA(BUL("/";A1;1);BUL(".";A1;1)))+1)))+1;UZUNLUK(A1)-(EĞERHATA(BUL("/";A1;(EĞERHATA(BUL("/";A1;1);BUL(".";A1;1)))+1);BUL(".";A1;(EĞERHATA(BUL("/";A1;1);BUL(".";A1;1)))+1))));(SOLDAN(A1;(EĞERHATA(BUL("/";A1;1);BUL(".";A1;1)))-1));(PARÇAAL(A1;(EĞERHATA(BUL("/";A1;1);BUL(".";A1;1)))+1;(EĞERHATA(BUL("/";A1;(EĞERHATA(BUL("/";A1;1);BUL(".";A1;1)))+1);BUL(".";A1;(EĞERHATA(BUL("/";A1;1);BUL(".";A1;1)))+1)))-(EĞERHATA(BUL("/";A1;1);BUL(".";A1;1)))-1)))
 
dogru soyluyorsunuz ben direkt bu formulu kullanayim ve sorunu aramaktan cok dediginiz gibi sorrunu bastan cozup kontrole gerek birakmamakta fayda var. peki benim son bir sorum daha olacak artik kucuk sorun falan cikti deyip yeniden basinizi agritmayacagim. cok cok tesekkur ederim verdiginiz bilgiler ve formuller icin. son sorum ise bu bahsettigimiz tarihlerden cok apayri bir dosyam ile ilgili: icinde tarih olan ve tarih degeri olmayan degerlerin oldugu A1 sutununda, SADECE tarih olan degerlerin karsilik geldigi B1 sutunundaki rakamlari nasil toplayabilirim. daha once tarih olup olmadigini kontrol edebilecegim formulu soyle soylemistiniz: =EĞERHATA(EĞER(A1+0=A1;"";"Check Date");"Check Date") buradan yola cikarak topla.carpimi kullanmayi dusundum ama emin olamadim. bunu bilgim olsun diye soruyorum aslinda son soru olarak.. gercekten paylastiginiz bilgiler kiymetli , ve tekrardan tesekkur edeirm Omer Baran. Bana Onur diye hitap edebilirsinizi.
 
Onur Bey,
ben tarz olarak DİZİ formülleri kullanan biri değilim, sebebi de basitçe şudur, excel sayfasının satır ve sütun sınırını sonuna kadar kullanmadığımıza göre ilave sütun satır kullanmanın hiçbir sakıncası yok diye düşünürüm.
Ayrıca dizi formülleri (-TOPLA.ÇARPIM da bir DİZİ formülüdür- 1'den fazla sütunu/satırı kontrol eden formüller/tüm sütunda/satırda arama yapan formüller veri yığınının büyüklüğüne göre exceli oldukça yoran/yavaşlatan bir yapıya sahip, onun için ilave sütun/satır kullanırım ve böylece formüllerim de basit anlaşılır formüller olur. Formül sayısı çok fazla oluyorsa da hücre değişince veya düğmeye tıklama ile çalışan ve formülleri uygulayıp değerleri yazan basit makro kodları tercih ediyorum (gerçi kod bilgim yeterli değil ama kendi işimi görmeye gayret ediyorum, beceremezsem de forumdan destek rica ediyorum) .

Sorunuza gelince ben olsam bahsettiğiniz hata bulma formülünü bir sütuna uygularım ve o sütuna göre ETOPLA işlevini kullanarak sonuç alırdım.

Bunun yerine TOPLA.ÇARPIM (bu da bir DİZİ formülüdür) işlevi kullanılarak da sonuç alınabilir.

İsterseniz 10-15 satırlık örnek verinizi bir dosyaya kayydedip burası gibi bir paylaşım sitesine yükleyin ve oradan alacağınız erişim link'ini burada paylaşırsanız bakayım.
 
Omer Bey, tum sorunlarimi ve hatta ardindan baska konularla ilgili de sorunlaerla karsilastim ve burada yeni konu acmamak icin ve kendim bulmaya gayret gosterip hallettim tum problemleri. cok ama cok tesekkur edeirm. vermis oldugunuz uzun formul cok ama cok ise yaradi ve sacma olmus benim onu en basta kullanmadan sorunlari halletmeye calisiyor olmam. Bir problem kalmadi simdilik.. Saygilar.
 
Geri
Üst