Çözüldü Çok Kriterli Çaprazara ile Sonucu Bulma

Forumumuza hoş geldiniz Sayın @cbartan81 .

Benim kullandığım Excel versiyonunda, belirttiğiniz ÇAPRAZARA işlevi olmadığından o konuda bir şey söylemeyeyim ancak,
sorunuzun cevabı, Ms. Excel'in tüm versiyonlarında olan işlevler kullanılarak bulunabilir gibi görünüyor.

Sorularınızı ekran örüntüsü yerine, örnek belge üzerinden sorarsanız iyi olur.
Konu açılırken dikkat edilecek hususlar ve örnek belge özellikleriyle ilgili gerekli açıklama
cevabımın altındaki İMZA bölümünde mevcut.
Sorunuzu bu açıklamalar doğrultusunda hazırlayacağınız bir örnek belge üzerinden sormanızda yarar var.

Asıl netleştirmeniz gereken durum ise VERİTABANI dediğiniz listenin, ayrı bir belgede mi olduğu
yoksa aynı belgede başka bir sayfada mı olduğu.

.
 
Merhaba Ömer Bey,hızlı dönüşün için teşekkürler.Veri tabanı yan sayfada mevuxt,örnek bir excel dosyası hazırladım .
Doldurulması gereke alan sayfasındaki Olması gereken tarihlerin veri tabanına göre en yakın büyük değere göre okuması gerekiyor.Bunu çaprazara ile yapılabilecğini söyledikleri için o şekilde konu açtım başka şekilde çözülürse ne mutlu ,cevabınızı bekliyorum.
 

Ekli dosyalar

İşlem için dizi formülü uygulaması önereceğim.
Her iki formül de dizi formülüdür, dilediğinizi kullanabilirsiniz.

EŞİTLİK halinden söz edilmemiş ben de sadece BÜYÜK olarak düşündüm.

Dizi formülü uygulaması nasıl yapılır?
-- Formülü ilk hücreye yapıştırın (C2)
-- Tekrar C2 hücresini seçin ve F2 tuşuna basarak hücre içerisine girin,
--
CTRL ve SHIFT tuşları basılı durumdayken ENTER tuşuna basın.
İşlem doğru yapılmışsa, formül kendiliğinden {.....} gibi KAŞLI PARANTEZ arasına alınır.
Bu karakterler klavyeden yazılırarak formül uygulanırsa sonuç alamazsınız.
-- Son olarak da C2 hücresini liste boyunca kopyalayın.

Kod:
You must log in to view
(2 satır)

.
 
Merhaba,

ÇAPRAZARA ile olan çözümü de şu şekildedir:

[REACTS=1,2]=ÇAPRAZARA(1;(('VERİ TABANI'!$A$2:$A$10=$A2)*('VERİ TABANI'!$B$2:$B$10>$B2));'VERİ TABANI'!$B$2:$B$10;;1)[/REACTS]Veriler bulunamazsa, #YOK Hatası verecektir.
Onun görünmesini istemezseniz, başına EĞERHATA formülü koyar ve aşağıdaki gibi kullanabilirsiniz:
[REACTS=1,2]=EĞERHATA(ÇAPRAZARA(1;(('VERİ TABANI'!$A$2:$A$10=$A2)*('VERİ TABANI'!$B$2:$B$10>B2));'VERİ TABANI'!$B$2:$B$10;;1);"")[/REACTS]
 
Bilgi olarak;

Sn @Admin

tarafından verilen ilk formülde,

#YOK hatası durumunda ne olması gerektiği de eklenebilir.
Kod:
You must log in to view
(1 satır)
formülünde, #YOK hatası durumunda "" (BOŞ) gelmesi için
Kod:
You must log in to view
(1 satır)
şeklinde yazılabilir..
 
Bilgi olarak;

Sn @Admin

tarafından verilen ilk formülde,

#YOK hatası durumunda ne olması gerektiği de eklenebilir.

=ÇAPRAZARA(1;(('VERİ TABANI'!$A$2:$A$10=$A2)*('VERİ TABANI'!$B$2:$B$10>$B2));'VERİ TABANI'!$B$2:$B$10;;1)
formülünde, #YOK hatası durumunda "" (BOŞ) gelmesi için

=ÇAPRAZARA(1;(('VERİ TABANI'!$A$2:$A$10=$A2)*('VERİ TABANI'!$B$2:$B$10>$B2));'VERİ TABANI'!$B$2:$B$10;"";1)
şeklinde yazılabilir..
Doğru ya, ÇAPRAZARA'nın böyle bir özelliği varken EĞERHATA'ya ne gerek değil mi hocam?
🙉
Siz LAMBDA'yı alamadınız mı hala hocam?
Insider abonesi olursanız, ilk güncellemede geliyor LAMBDA.
 
Doğru ya, ÇAPRAZARA'nın böyle bir özelliği varken EĞERHATA'ya ne gerek değil mi hocam?
🙉
Siz LAMBDA'yı alamadınız mı hala hocam?
Insider abonesi olursanız, ilk güncellemede geliyor LAMBDA.
EĞERHATA ile yaptığınız yöntem de geçerli....
Ama, ÇAPRAZARA işlevi formül yazılımının içerisinde de mevcut.... Alışkanlık olarak ben de hep EĞERHATA kullanıp, formül içeriğini hep sizdeki gibi ,, şeklinde virgülle geçiyorum....

Benim Office versiyonu 365 Pro Plus olarak Microsoft 365 Apps for Entreprise... ve maalesef henüz LAMBDA işlevi gelmedi...
Bu versiyon ile Insider olunabiliyor mu bilmiyorum gerçekten...
 
İlginiz için teşekkürler ,çaprazarayı asıl dosyama koymak istiyorum ama herşeyi yaptım değer hatası alıyorum,örnek attığım dosyaya koydugumda bir sorun olmuyor,bir de çaprazara da ki ilk başta yapılan 1 mantığı nedir.
 
İlginiz için teşekkürler ,çaprazarayı asıl dosyama koymak istiyorum ama herşeyi yaptım değer hatası alıyorum,örnek attığım dosyaya koydugumda bir sorun olmuyor,bir de çaprazara da ki ilk başta yapılan 1 mantığı nedir.

Formülü eklediğiniz dosya üzerinden çalıştırıp ekledim.
Buradaki 1 mantığı, sonucun ne olursa olsun 1 ile çarpılması hikayesinden kaynaklanır.
Arama değeri olarak 1 yazıp, Dizi kısmında birden fazla kriter koyarak ÇAPRAZARA'nın kriter seçeneğini arttırmış oluyoruz.

1629320411289.webp


Resimde kırmızı ile işaretlediğim alandaki parantezlere dikkat ediniz.
Yani verdiğim formül sorunsuz olarak çalışmaktadır.
Uyarlayamıyorsanız, dosyanızı ekleyebilirsiniz.
 
Moderatörün son düzenlenenleri:
Belki de,
formülün ilk başında yazılan 1 olayının mantığını örnekle açıklamak daha yerinde olacaktır....

öncelikle @Admin tarafından verilen formüle bakacak olursak
=ÇAPRAZARA(1;(('VERİ TABANI'!$A$2:$A$10=$A2)*('VERİ TABANI'!$B$2:$B$10>$B2));'VERİ TABANI'!$B$2:$B$10;"";1)

Çaprazara işlevinin Söz dizimine göre,
=ÇAPRAZARA(aranan_değer, aranan_dizi, döndürülen_dizi, [bulunamadığında], [eşleştirme_modu], [arama_modu])

aranan_değer =
1
aranan_dizi = (('VERİ TABANI'!$A$2:$A$10=$A2)*('VERİ TABANI'!$B$2:$B$10>$B2))
döndürülen_dizi = 'VERİ TABANI'!$B$2:$B$10
[bulunamadığında] = ""
[eşleştirme_modu] = 1 (Tam eşleşme veya en yakın büyük öğe)
[arama_modu] = Formülde yazılmamış... dolayısıyla Varsayılan olarak alınır = 1 (Baştan sona doğru arama)

İlk Satırdaki ALİ - 09.05.2021 için değerlendirirsek......
aranan değer = 1
aranan dizi = (('VERİ TABANI'!$A$2:$A$10=$A2)*('VERİ TABANI'!$B$2:$B$10>$B2))

aranan diziye parça parça bakacak olursak
('VERİ TABANI'!$A$2:$A$10=$A2) : Listede A2 : A10 aralığına bakıyoruz ve A2 de yazan ALİ değerinin eşitliğini arıyoruz.
Sonuçta : {DOĞRU\DOĞRU\DOĞRU\YANLIŞ\YANLIŞ\YANLIŞ\YANLIŞ\YANLIŞ\YANLIŞ} dizisi elde edilir.
(Burada \ satır anlamındadır. Yani listenin A2 satırı aranılan ALİ değerine eşittir. Sonuç DOĞRU....Listenin A3 satırındaki değer ALİ ye eşittir. Sonuç DOĞRU..... şeklinde dizi elde edilir)

('VERİ TABANI'!$B$2:$B$10>$B2) : Listenin B kolonundaki değerler B2 den büyük olmalı....
Sonuçta : {YANLIŞ\DOĞRU\DOĞRU\YANLIŞ\DOĞRU\DOĞRU\YANLIŞ\DOĞRU\DOĞRU} dizisi elde edilir...
Yani Listenin B2 deki değeri (07.05.2021), diğer sayfanın B2 hücresindeki değerden (09.05.2021) büyük değildir. Sonuç YANLIŞ... Ama listenin B3 deki değeri (14.05.2021) 09.05.2021 den büyüktür. Sonuç DOĞRU....

DOĞRU = 1 ve YANLIŞ = 0 değerindedir.

Şimdi bu iki diziyi çarparsak, yani aranan dizi yi oluşturursak
(('VERİ TABANI'!$A$2:$A$10=$A2)*('VERİ TABANI'!$B$2:$B$10>$B2))
Sonuçta, ilk satır için DOĞRU * YANLIŞ = 1*0 =0, ikinci satır için DOĞRU * DOĞRU = 1*1 = 1........ olarak
{0\1\1\0\0\0\0\0\0} dizisi elde edilir....

Aranan değerimiz 1 olduğundan, {0\1\1\0\0\0\0\0\0} dizisinde 1 leri arıyoruz.... 2. satır ve 3. satır da 1 değerleri mevcut... bunlar da listede 14.05.2021 ve 10.07.2021 olmaktadır.....

Formülde, arama modu varsayılan olarak başlangıçtan sona doğru olduğundan, dizideki ilk 1 değeri bizim aradığımız değer olmaktadır. Yani listenin ikinci satırındaki 14.05.2021.....
 
Benim TÜRKÇE ile makale işi zor görünüyor..
Bende cümleler bozuk, hep devrik cümle (ya da yarım / tamamlanmış cümle)...

Sanıyorum, o maharet, bana uğramadan geçmiş... (Matematikçilerin bir özelliği galiba)
 
Valla hocam adım adım açıklamalarınız bence gayet yerinde.
Sonuçta Excel'de okunup anlaşılıyorsa, iş bitmiştir.
Ellerinize sağlık olsun tüm katkılarınız için.
 
Konuyu başlatan
Normal Üye
Katılım
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Formül Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
18
Üst