Formula Excel: XLOOKUP dengan pelbagai kriteria kompleks -

Isi kandungan

Ringkasan

Untuk mencari data berdasarkan beberapa kriteria kompleks, anda boleh menggunakan fungsi XLOOKUP dengan beberapa ungkapan berdasarkan logik boolean. Dalam contoh yang ditunjukkan, formula dalam G5 adalah:

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

Dengan tetapan lalai XLOOKUP untuk mod padanan (tepat) dan mod carian (pertama hingga terakhir) formula sepadan dengan rekod pertama di mana:

akaun bermula dengan "x" DAN wilayah adalah "timur", dan bulan TIDAK April.

yang merupakan rekod keempat (baris 8) dalam contoh yang ditunjukkan.

Penjelasan

Biasanya, fungsi XLOOKUP dikonfigurasi untuk mencari nilai dalam tatasusunan yang ada di lembaran kerja. Namun, apabila kriteria yang digunakan untuk mencocokkan nilai menjadi lebih kompleks, anda boleh menggunakan logik boolean untuk membuat tatapan pencarian dengan hanya terdiri dari 1s dan 0s, kemudian cari nilai 1. Ini adalah pendekatan yang digunakan dalam contoh ini:

=XLOOKUP(1,boolean_array,result_array)

Dalam contoh ini, kriteria yang diperlukan adalah:

akaun bermula dengan "x" DAN wilayah adalah "timur", dan bulan TIDAK April.

Untuk masing-masing tiga kriteria berasingan di atas, kami menggunakan ungkapan logik yang berasingan. Ungkapan pertama menggunakan fungsi KIRI untuk menguji sama ada Akaun bermula dengan "x":

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

Kerana kami memeriksa dua belas nilai, hasilnya adalah array dengan dua belas nilai seperti ini:

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

Ungkapan kedua menguji jika Wilayah adalah "timur" menggunakan operator sama dengan (=):

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

Seperti sebelumnya, kami mendapat satu lagi array dengan dua belas nilai TRUE FALSE:

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

Ungkapan ketiga perlu mengecualikan bulan April. Cara termudah untuk melakukannya adalah dengan menguji bulan April secara langsung dengan fungsi BULAN:

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

Kemudian gunakan fungsi NOT untuk membalikkan hasilnya:

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

yang membuat susunan yang menggambarkan "bukan April" dengan betul:

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

Seterusnya, ketiga-tiga susunan digandakan bersama, dan operasi matematik menggabungkan nilai BENAR dan SALAH hingga 1 dan 0

(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)

Dalam aritmetik boolean, pendaraban berfungsi seperti fungsi logik DAN, jadi hasil akhir adalah satu susunan seperti ini:

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

Rumusannya kini boleh ditulis semula seperti ini:

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

Dengan 1 sebagai nilai pencarian, dan tetapan lalai untuk mod padanan (tepat) dan mod carian (pertama hingga terakhir), XLOOKUP sepadan dengan 1 pertama (kedudukan keempat) dan mengembalikan baris yang sesuai dalam susunan hasil, yaitu B8: E8.

Perlawanan terakhir

Dengan menetapkan argumen mod carian pilihan ke -1, anda dapat mencari "perlawanan terakhir" dengan kriteria yang sama seperti ini:

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

Artikel menarik...