Excel VLOOKUP ตามคอลัมน์ที่สองโดยใช้ชื่อตารางเป็นช่วง


11

การใช้ตารางตัวอย่างด้านล่างฉันสามารถใช้สูตร=VLOOKUP("ABC123456",Table1,3,FALSE)เพื่อค้นหาDemandค่าได้ แต่ฉันต้องการให้สามารถทำการค้นหาได้โดยใช้Cust Partฟิลด์โดยไม่ต้องทำให้Cust Partฟิลด์เป็นคอลัมน์แรกในตาราง การสร้างCust Partคอลัมน์แรกไม่ใช่วิธีแก้ปัญหาที่ยอมรับได้เพราะฉันต้องทำการค้นหาโดยใช้Partฟิลด์และฉันไม่ต้องการใช้ช่วงรหัสที่ยาก (เช่น$B$2:$C$4) ส่วนใหญ่เป็นเรื่องของการตั้งค่า แต่เพราะการใช้ตารางและฟิลด์ ชื่อทำให้สูตรอ่านง่ายขึ้น มีวิธีการทำเช่นนี้?

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


14

เป็นไปได้ที่จะใช้OFFSETเพื่อคืนค่า Table1 แต่กลับไป 1 คอลัมน์เช่น

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

ที่จะค้นหา AZ12345 ในคอลัมน์ CustPart และส่งคืนค่าจากคอลัมน์ถัดไป


พารามิเตอร์ใดควรอยู่ที่นี่หากต้องการค่าคอลัมน์ส่วนที่นี่
zygimantus

10

คุณสามารถรวมINDEXและMATCHทำให้ได้ผลลัพธ์เดียวกันVLOOKUPโดยไม่มีการเปรียบเทียบถูกยับยั้งไปยังคอลัมน์แรก แม้ว่ามันจะซับซ้อนกว่าเล็กน้อย

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

โดยทั่วไปคุณใช้MATCHเพื่อค้นหาหมายเลขแถวและINDEXรับค่า

หมายเหตุ: ไม่เหมือนกับVLOOKUPหากผลลัพธ์คือเซลล์ว่างINDEXจะส่งคืน0แทนที่จะเป็นสตริงว่าง


1
"ไม่เหมือนVLOOKUP"? มันทำงานในลักษณะเดียวกันกับเซลล์ว่างที่ถูกแปลเป็น 0
underscore_d

1
นี่เป็นตัวอย่างแรกที่ฉันเห็นเมื่อINDEX MATCHใช้ตาราง สิ่งนี้ช่วยปรับปรุงความสามารถในการอ่านสูตรได้อย่างมาก ฉันพยายามหลีกเลี่ยงOFFSETเพราะเป็นฟังก์ชั่น Excel ที่ระเหยง่ายและอาจส่งผลให้เกิดการประมวลผลค่าใช้จ่ายเพิ่มเติม
เบ็น

2

เกี่ยวกับสิ่งที่ชอบ:

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

ฉันชอบสิ่งนี้เพื่อให้คุณสามารถเห็นสิ่งที่คุณกำลังทำอยู่แม้ในตารางที่ซับซ้อนยิ่งขึ้นรวมถึงหากโครงสร้างของตารางเปลี่ยนแปลงสูตรจะยังคงทำงานตราบใดที่คอลัมน์ Cust Part อยู่ด้านหน้าคอลัมน์ความต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.