INDEX และ MATCH ใน Excel ให้ผลลัพธ์ 1 แถวที่ต่ำกว่าที่ต้องการ


2

ในการใช้ INDEX และ MATCH เพื่อทำการ VLOOKUP แบบหลายเงื่อนไขฉันกำลังรับผลลัพธ์สำหรับคอลัมน์ที่ต้องการโดยใช้สูตรด้านล่าง แต่ผลลัพธ์นั้นต่ำกว่าที่ต้องการ 1 แถวอย่างสม่ำเสมอ

{=INDEX($A$2:$E$1200,MATCH(1,(A:A=A2)*(E:E="WS01"),0),3)}

ในภาพที่แนบมาเราจะเห็น S / N ของแถว 4 ส่งคืนสำหรับผลลัพธ์ของแถว 3 ในการค้นหารายการ "WS01" ถ้าฉันแทนที่ตัวคูณ (*) ใน MATCH ด้วยการเพิ่มฉันจะได้ผลลัพธ์ที่ถูกต้องสำหรับร้านแรก (# 2) แต่สำหรับแถวต่อไปนี้ทั้งหมดสูตรจะจบลงด้วยการให้ S / N ของแถว 4 (REG01) ดูเหมือนจะไม่เป็นเส้นทางที่ถูกต้องเช่นกัน

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

คำตอบ:


2

วิธีการทำงานของฟังก์ชั่นเหล่านี้มีดังต่อไปนี้

ดัชนีใช้อาเรย์ (A2, A3, A4 ... ) รวมถึงตัวเลข

= ดัชนี (A2: A4,2) จะส่งคืนค่าใน A3 เนื่องจากเป็นเซลล์ที่สองในอาร์เรย์

การจับคู่ค้นหาผ่านอาร์เรย์และส่งคืนจำนวนเซลล์ที่จะพบใน (เซลล์ที่ 2, เซลล์ที่ 4 เป็นต้น) จะไม่ส่งคืนตำแหน่งเซลล์ที่แท้จริง

ดังนั้นโดยไม่ใช้อาร์เรย์ที่ตรงกันในสองฟังก์ชัน

  • ดัชนีใช้ C2: C1000
  • การจับคู่ใช้ A: A

คุณกำลังทำให้เกิดความไม่ตรงกันของคุณ ฟังก์ชั่นการจับคู่พบว่าในทุกบรรทัดที่ 3 (A3) ทุกอย่างตรงกันดังนั้นมันจึงคืนค่า 3

ดัชนีจะใช้เวลา (C2: C1000,3) และส่งกลับเซลล์ที่ 3 ซึ่งเกิดขึ้นเป็น C4 ไม่ใช่ C3

หมายเหตุสำหรับฟังก์ชันอาร์เรย์คุณสามารถใช้ C2: C1000 ไม่ใช่ A2: E1000 จากนั้นคุณสามารถละเว้นส่วนคอลัมน์ของฟังก์ชันได้


ฉันไม่ทำตาม อาร์เรย์ INDEX ของฉันคือ $ A $ 2: $ E $ 1200 ไม่ใช่ C2: C1000 คุณช่วยอธิบายหรือยกตัวอย่างได้หรือไม่?
David Metcalfe

1
@DavidMetcalfe INDEX()อาร์เรย์ของคุณเริ่มต้นที่แถว 2 MATCH()อาร์เรย์ของคุณเริ่มที่แถว 1 นั่นคือปัญหา พวกเขาทั้งสองต้องเริ่มต้นที่แถวเดียวกัน
Kyle

@ Kyle Ah ฉันเห็นสิ่งที่คุณหมายถึงและสิ่ง gtwebb น่าจะพยายามชี้ให้เห็นตอนนี้
David Metcalfe

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