Rumus Excel: Mengembalikan array dengan fungsi INDEX -

Daftar Isi

Formula umum

=SUM(INDEX(range,N(IF(1,(1,2,3)))))

Ringkasan

Agar INDEX mengembalikan larik item ke fungsi lain, Anda bisa menggunakan trik tidak jelas berdasarkan fungsi IF dan N. Dalam contoh yang ditampilkan, rumus dalam E5 adalah:

=SUM(INDEX(data,N(IF(1,(1,2,3)))))

di mana "data" adalah rentang bernama B5: B10.

Penjelasan

Sangatlah sulit untuk membuat INDEX mengembalikan lebih dari satu nilai ke fungsi lain. Sebagai ilustrasi, rumus berikut dapat digunakan untuk mengembalikan tiga item pertama dalam rentang bernama "data", saat dimasukkan sebagai rumus larik multisel.

(=INDEX(data,(1,2,3)))

Hasilnya bisa dilihat di kisaran D10: F10 yang benar berisi 10, 15, dan 20.

Namun, jika kita membungkus rumus dalam fungsi SUM:

=SUM(INDEX(data,(1,2,3)))

Hasil akhirnya adalah 10, sedangkan seharusnya 45, meskipun dimasukkan sebagai rumus array. Masalahnya adalah INDEX hanya mengembalikan item pertama dalam larik ke fungsi SUM. Untuk memaksa INDEX mengembalikan beberapa item ke SUM, Anda bisa membungkus konstanta array dalam fungsi N dan IF seperti ini:

=SUM(INDEX(data,N(IF(1,(1,2,3)))))

yang mengembalikan hasil yang benar dari 45. Demikian pula, rumus ini:

=SUM(INDEX(data,N(IF(1,(1,3,5)))))

mengembalikan 60 dengan benar, jumlah dari 10, 20, dan 30.

Teknik tidak jelas ini kadang-kadang disebut "dereferencing", karena ini menghentikan INDEX menangani hasil sebagai referensi sel, dan kemudian menghapus semua kecuali item pertama dalam larik. Sebaliknya, INDEX mengirimkan array penuh nilai ke SUM masuk. Jeff Weir memiliki penjelasan yang baik di sini tentang stackoverflow.

Catatan untuk pembaca: Saya tidak yakin mengapa ini berhasil. Jika bisa memberikan penjelasan yang jelas, saya akan update untuk menyertakan.

Artikel yang menarik...