Salam penghuni Stack Overflow!

Saya mengalami masalah saat mencoba mendapatkan formula yang melibatkan INDIRECT untuk berperilaku sendiri dalam hubungannya dengan INDEX. Ketika saya menggunakan nilai baris tertentu, array berfungsi dengan baik, tetapi ketika saya mencoba dan menggunakan INDIRECT untuk mendapatkan nomor baris saat ini saya mendapatkan #VALUE! kesalahan.

Misalnya: Saya memiliki ini di sel R108, dan berfungsi sebagaimana mestinya:

=IF(OR(ISERROR(INDEX(MODEL,SMALL(IF(OWNERID=N108,ROW(OWNERID)-ROW(INDEX(OWNERID,1,1))+1),1))),N108=""),"",INDEX(MODEL,SMALL(IF(OWNERID=N108,ROW(OWNERID)-ROW(INDEX(OWNERID,1,1))+1),1)))

N108 mengacu pada nilai yang cocok dengan OWNERID, yang merupakan rentang bernama pada lembar lain di buku kerja yang sama.

Tetapi yang ingin saya lakukan adalah agar rumus tersebut merujuk pada baris yang sama dengan tempat ia berada, jadi inilah yang ingin saya kerjakan:

=IF(OR(ISERROR(INDEX(MODEL,SMALL(IF(OWNERID=INDIRECT("N"&ROW()),ROW(OWNERID)-ROW(INDEX(OWNERID,1,1))+1),1))),INDIRECT("N"&ROW())=""),"",INDEX(MODEL,SMALL(IF(OWNERID=INDIRECT("N"&ROW()),ROW(OWNERID)-ROW(INDEX(OWNERID,1,1))+1),1)))

Sekedar menyebutkan demi kejelasan; pada satu lembar saya memiliki daftar informasi komputer yang memiliki dua rentang bernama: MODEL dan OWNERID Karena rumusnya adalah array yang saya ingat untuk CTRL + SHIFT + ENTER.

Apa yang saya lewatkan yang menyebabkan INDIRECT tidak memberi saya nomor baris untuk tujuan referensi? Sejauh yang saya tahu, itu hanya tidak menyukai fakta bahwa itu digunakan sebagai bagian dari pencarian rentang bernama.

Terima kasih sebelumnya!

Salam, Dilan.

1
Dshore87 4 Agustus 2016, 13:45

1 menjawab

Jawaban Terbaik

Ini adalah perilaku INDIRECT yang diketahui dalam konteks array. Karena INDIRECT akan mengembalikan referensi dan bukan nilai, konteks array tampaknya tidak bisa mendapatkan nilai dari referensi itu. Mungkin ini juga disebabkan dari perilaku volatile INDIRECT.

Contoh Sederhana:

enter image description here

Rumus:

D1 = {=SUM(IF(A1:A10=INDIRECT("A"&{3,5,7}),B1:B10))}

D3 = {=SUM(IF(A1:A10=N(INDIRECT("A"&{3,5,7})),B1:B10))}

D5 = {=SUM(IF(A1:A10=T(INDIRECT("A"&{3,5,7})),B1:B10))}

Seperti yang Anda lihat jika INDIRECT dibungkus dalam N itu berfungsi seperti yang diharapkan.

Tetapi untuk ini kita harus tahu apakah nilainya numerik atau tekstual. Jika tekstual, misalnya Z1, Z2, Z3, ... , Z10 pada kolom A, maka T harus digunakan sebagai pengganti N.

1
Axel Richter 4 Agustus 2016, 14:35
Terima kasih Axel atas tanggapan Anda! Ini tentu saja telah memecahkan masalah saya, OWNERID bersifat tekstual dan dengan demikian awalan "T" memang memecahkan masalah. Saya bahkan tidak menyadari keberadaan parameter ini, Jadi terima kasih telah mencerahkan saya!
 – 
Dshore87
4 Agustus 2016, 15:30
@Dshore87: Sama-sama! Tapi untuk lebih jelasnya: N() dan T() adalah fungsi bukan parameter.
 – 
Axel Richter
4 Agustus 2016, 15:43