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 menjawab
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:
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
.
N()
danT()
adalah fungsi bukan parameter.