
Genel formül
=XLOOKUP(max,dates,results,,-1) // latest match by date
Özet
Tarihe göre bir veri kümesindeki en son eşleşmeyi almak için, eşleştirme_modunu -1'e ayarlayarak yaklaşık eşleşme modunda XLOOKUP'u kullanabilirsiniz. Gösterilen örnekte, G5'teki formül aşağıdaki gibidir:
=XLOOKUP(MAX(date),(item=F5)*date,price,,-1)
burada tarih (C5: C15), öğe (B5: B15) ve fiyat (D5: D15) adlandırılmış aralıklardır.
Açıklama
XLOOKUP, daha karmaşık aramalar için olağanüstü derecede iyi olmasını sağlayan çeşitli özellikler sunar. Bu örnekte, bir ürün için tarihe göre en son fiyatı istiyoruz. Veriler tarihe göre artan sırada sıralansaydı, bu çok kolay olurdu. Ancak bu durumda veriler sıralanmaz.
Varsayılan olarak, XLOOKUP bir veri kümesindeki ilk eşleşmeyi döndürür. Son eşleşmeyi elde etmek için, isteğe bağlı arama_modu bağımsız değişkenini -1 olarak ayarlayarak XLOOKUP'un "sondan ilke" aramasını sağlayabiliriz. Ancak, bu yaklaşımı burada kullanamayız çünkü bir ürün için en son fiyatın en son görüneceğinin garantisi yoktur.
Bunun yerine, "tam veya sonraki en küçük" yaklaşık bir eşleşmeyi zorlamak için isteğe bağlı eşleme_modu bağımsız değişkenini -1 olarak ayarlayabilir ve arama değerini ve arama dizisini aşağıda açıklandığı gibi ayarlayabiliriz. G5'teki formül aşağıya kopyalanır:
=XLOOKUP(MAX(date),(item=F5)*date,price,,-1)
Bağımsız değişkenler üzerinde tek tek çalışırken, aranan_değer, verilerdeki en büyük (en son) tarihtir:
MAX(date) // get max date value
Arama_dizisi bir mantıksal mantık ifadesiyle türetilir:
(item=F5)*date
Her bir öğeyi F5'teki "Kemer" değeriyle karşılaştırarak, bir DOĞRU / YANLIŞ değerleri dizisi elde ederiz:
(TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE;FALSE)
burada DOĞRU değerler "Kayış" girişlerini temsil eder. Bu dizi bir filtre görevi görür. Adlandırılmış aralık tarihindeki değerlerle çarpıldığında , DOĞRU / YANLIŞ değerleri 1'ler ve 0'lar olarak değerlendirilir:
=(1;0;0;0;0;0;1;0;1;0;0)*date
Sonuç, kayışlar için yalnızca sıfırları ve tarihleri içeren bir dizidir:
=(43484;0;0;0;0;0;43561;0;43671;0;0)
Not: Seri numaraları geçerli Excel tarihleridir.
Bu dizi, arama_dizisi bağımsız değişkeni olarak doğrudan XLOOKUP'a gönderilir.
Dönüş_dizi, adlandırılmış aralık fiyatıdır (D5: D15)
İsteğe bağlı not_found bağımsız değişkeni sağlanmadı.
Eşleştirme_modu, tam eşleşme veya sonraki en küçük öğe için -1 olarak ayarlanır.
XLOOKUP, maksimum tarih değerini bulmak için arama dizisine bakar. Dizi, "Kuşak" ile ilişkili olmayan tarihleri hariç tutacak şekilde filtrelendiğinden, XLOOKUP, en son tarihe karşılık gelen en iyi eşleşmeyi (tam tarihi veya sonraki en küçük tarihi) bulur.
Nihai sonuç, en son tarihle ilişkili fiyattır. Veriler herhangi bir sırada sıralandığında formül çalışmaya devam edecektir.