Excel formülü: Karmaşık çok ölçütlü XLOOKUP -

İçindekiler

Özet

Verileri birden çok karmaşık ölçüt temelinde aramak için, mantıksal mantığa dayalı birden çok ifadeyle XLOOKUP işlevini kullanabilirsiniz. Gösterilen örnekte, G5'teki formül şöyledir:

=XLOOKUP(1,(LEFT(B5:B16)="x")*(C5:C16="east")*NOT(MONTH(D5:D16)=4),B5:E16)

XLOOKUP'un eşleşme modu (tam) ve arama modu (ilkden sonuncuya) için varsayılan ayarlarıyla formül, aşağıdaki durumlarda ilk kayıtla eşleşir:

hesap "x" ile başlar VE bölgesi "doğu" dur ve ay Nisan DEĞİLDİR.

bu, gösterilen örnekteki dördüncü kayıttır (satır 8).

Açıklama

Normalde, XLOOKUP işlevi, çalışma sayfasında bulunan bir arama dizisindeki bir değeri arayacak şekilde yapılandırılır. Bununla birlikte, bir değeri eşleştirmek için kullanılan ölçüt daha karmaşık hale geldiğinde, anında yalnızca 1'ler ve 0'lardan oluşan bir arama dizisi oluşturmak için boole mantığını kullanabilir ve ardından 1 değerini arayabilirsiniz. Bu örnekte kullanılan yaklaşım budur:

=XLOOKUP(1,boolean_array,result_array)

Bu örnekte gerekli kriterler:

hesap "x" ile başlar VE bölgesi "doğu" dur ve ay Nisan DEĞİLDİR.

Yukarıdaki üç ayrı kriterin her biri için ayrı bir mantıksal ifade kullanıyoruz. İlk ifade, Hesabın "x" ile başlayıp başlamadığını test etmek için LEFT işlevini kullanır:

LEFT(B5:B16)="x" // account begins with "x"

On iki değeri kontrol ettiğimiz için, sonuç şunun gibi on iki değere sahip bir dizidir:

(TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE)

İkinci ifade, eşittir (=) operatörünü kullanarak Bölge'nin "doğu" olup olmadığını test eder:

C5:C16="east" // region is east

Daha önce olduğu gibi, on iki TRUE FALSE değerine sahip başka bir dizi elde ediyoruz:

(FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;TRUE)

Üçüncü ifadenin Nisan ayını hariç tutması gerekir. Bunu yapmanın en kolay yolu, Nisan ayını doğrudan MONTH işleviyle test etmektir:

MONTH(D5:D16)=4 // month is April

Ardından sonucu tersine çevirmek için DEĞİL işlevini kullanın:

NOT(MONTH(D5:D16)=4) // month is not April

"Nisan değil" ifadesini doğru şekilde tanımlayan bir dizi oluşturan

(FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE)

Ardından, üç dizi birlikte çarpılır ve matematik işlemi DOĞRU ve YANLIŞ değerlerini 1'ler ve 0'lara zorlar:

(1;0;1;1;1;0;0;0;1;1;0;1)* (0;0;1;1;1;0;1;0;0;1;0;1)* (0;0;0;1;1;1;1;1;1;1;1;1)

Boole aritmetiğinde çarpma, mantıksal fonksiyon AND gibi çalışır, dolayısıyla nihai sonuç şuna benzer tek bir dizidir:

(0;0;0;1;1;0;0;0;0;1;0;1)

Formül artık şu şekilde yeniden yazılabilir:

=XLOOKUP(1,(0;0;0;1;1;0;0;0;0;1;0;1),B5:E16)

Arama değeri olarak 1 ve eşleşme modu (tam) ve arama modu (ilk ila son) için varsayılan ayarlarla, XLOOKUP ilk 1 (dördüncü konum) ile eşleşir ve sonuç dizisindeki karşılık gelen satırı döndürür, yani B8: E8.

Son maç

İsteğe bağlı arama modu bağımsız değişkenini -1 olarak ayarlayarak, "son eşleşmeyi" aşağıdaki gibi aynı ölçütlerle bulabilirsiniz:

=XLOOKUP(1,(LEFT(B5:B16)="x")*(C5:C16="east")*NOT(MONTH(D5:D16)=4),B5:E16,,,-1)

Ilginç makaleler...