Excel VLOOKUP dengan kolom kedua menggunakan nama tabel sebagai rentang

11

Menggunakan contoh tabel di bawah ini, saya bisa menggunakan rumus =VLOOKUP("ABC123456",Table1,3,FALSE)untuk mencari Demandnilai, tetapi saya ingin bisa melakukan pencarian dengan menggunakan Cust Partbidang tanpa harus membuat Cust Partbidang kolom pertama dalam tabel. Membuat Cust Partkolom pertama bukanlah solusi yang dapat diterima, karena saya juga perlu melakukan pencarian menggunakan Partbidang, dan saya tidak ingin menggunakan rentang kode keras (misalnya $B$2:$C$4) kebanyakan karena masalah preferensi, tetapi juga karena menggunakan tabel dan bidang nama membuat rumus lebih mudah dibaca. Apakah ada cara untuk melakukan ini?

masukkan deskripsi gambar di sini

Drew Chapin
sumber

Jawaban:

14

Dimungkinkan untuk menggunakan OFFSETrentang Table1 tetapi 1 kolom lebih, misalnya

=VLOOKUP("AZ12345",OFFSET(Table1,0,1),2,FALSE)

Itu akan mencari AZ12345 di kolom CustPart dan mengembalikan nilai dari kolom berikutnya

barry houdini
sumber
Parameter apa yang harus ada di sini jika nilai kolom Bagian diperlukan di sini?
zygimantus
10

Anda dapat menggabungkan INDEXdan MATCHmencapai hasil yang sama VLOOKUPtanpa membandingkannya dengan kolom pertama. Padahal itu sedikit lebih kompleks.

=INDEX(Table1[Demand],MATCH("AZ12345",Table1[Cust Part],0))

Pada dasarnya, Anda menggunakan MATCHuntuk menemukan nomor baris, dan INDEXuntuk mendapatkan nilai.

Catatan: Tidak seperti VLOOKUP, jika hasilnya adalah sel kosong, INDEXakan kembali 0sebagai ganti string kosong.

Drew Chapin
sumber
1
"Tidak seperti VLOOKUP"? Ini berperilaku persis sama tentang sel kosong yang diterjemahkan ke dalam 0s.
underscore_d
1
Ini adalah contoh pertama yang saya lihat dengan INDEX MATCHmenggunakan tabel. Ini sangat meningkatkan keterbacaan rumus. Saya mencoba untuk menghindarinya OFFSETkarena ini adalah fungsi Excel yang mudah menguap dan dapat mengakibatkan pemrosesan overhead tambahan.
Ben
2

Bagaimana dengan sesuatu seperti:

=VLOOKUP("ABC123456";Table1[[Cust Part]:[Demand]];COLUMNS(Table1[[Cust Part]:[Demand]]);FALSE) 

Saya lebih suka ini sehingga Anda dapat melihat apa yang Anda lakukan, bahkan dalam tabel yang lebih kompleks, ditambah jika struktur tabel berubah, rumusnya masih akan berfungsi, selama kolom Cust Part ada di depan kolom Permintaan.

Peter
sumber