
Ringkasan
Untuk mengekstrak beberapa padanan untuk memisahkan sel, dalam lajur yang berasingan, anda boleh menggunakan formula larik berdasarkan INDEX dan KECIL. Dalam contoh yang ditunjukkan, formula dalam F5 adalah:
(=IFERROR(INDEX(names,SMALL(IF(groups=$E5,ROW(names)-MIN(ROW(names))+1),COLUMNS($E$5:E5))),""))
Ini adalah formula larik dan mesti dimasukkan dengan Control + Shift + Enter.
Setelah memasukkan formula di sel pertama, seret ke bawah dan seberang untuk mengisi sel lain.
Penjelasan
Catatan: formula ini menggunakan dua julat bernama: "names" merujuk kepada C5: C11, dan "group" merujuk kepada B5: B11. Nama-nama ini ditentukan dalam tangkapan skrin di atas juga.
Inti dari formula ini adalah: kami menggunakan fungsi KECIL untuk menghasilkan nombor baris yang sepadan dengan "nth match". Setelah kita mempunyai nombor baris, kita memasukkannya ke fungsi fungsi INDEX, yang mengembalikan nilai pada baris itu.
Caranya ialah SMALL bekerja dengan array yang dibina secara dinamik oleh IF dalam bit ini:
IF(groups=$E5,ROW(names)-MIN(ROW(names))+1)
Coretan ini menguji julat "kumpulan" yang dinamakan untuk nilai di E5. Sekiranya dijumpai, ia mengembalikan nombor baris dari pelbagai nombor baris relatif yang dibuat dengan:
ROW(names)-MIN(ROW(names))+1
Hasil akhir adalah susunan yang mengandungi nombor di mana ada pertandingan, dan SALAH jika tidak:
(1; SALAH; SALAH; SALAH; SALAH; 6; SALAH)
Susunan ini menjadi KECIL. Nilai k untuk KECIL (nth) berasal dari julat yang berkembang:
COLUMNS($E$5:E5)
Apabila disalin di jadual hasil, julat mengembang, menyebabkan k (nth) meningkat. Fungsi KECIL mengembalikan setiap nombor baris yang sepadan, yang dibekalkan ke fungsi INDEX sebagai baris_num, dengan julat "nama" yang dinamakan sebagai array.
Kesalahan pengendalian
Apabila COLUMNS mengembalikan nilai untuk k yang tidak ada, KECIL melemparkan ralat #NUM. Ini berlaku setelah semua perlawanan berlaku. Untuk menekan ralat, kami membungkus formula dalam fungsi IFERROR untuk menangkap kesalahan dan mengembalikan rentetan kosong ("").