Vba: วิธีใช้ index match ที่มีหลายเกณฑ์


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อดำเนินการ INDEX MATCH ที่มีหลายเกณฑ์ใน VBA:

 SubIndexMatchMultiple ()
    Range(" F3 ").Value = WorksheetFunction.Index(Range(" C2:C10 "), _
    WorksheetFunction.Match(Range(" F1 "), Range(" A2:A10 "), 0) + _
    WorksheetFunction.Match(Range(" F2 "), Range(" B2:B10 "), 0) - 1)
End Sub

ตัวอย่างนี้ค้นหาค่าในเซลล์ F1 ในช่วง A2:A10 และค่าในเซลล์ F2 ในช่วง B2:B10 และส่งกลับค่าที่สอดคล้องกันในช่วง C2:C10 ในเซลล์ F3

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: ดำเนินการ INDEX MATCH ด้วยหลายเกณฑ์โดยใช้ VBA

สมมติว่าเรามีชุดข้อมูลต่อไปนี้ใน Excel ที่มีข้อมูลเกี่ยวกับผู้เล่นบาสเก็ตบอล:

สมมติว่าเราต้องการค้นหาผู้เล่นที่ตรงกับชื่อทีมในเซลล์ F1 และตำแหน่งในเซลล์ F2 และส่งคืนชื่อในเซลล์ F3

เราสามารถสร้างมาโครต่อไปนี้เพื่อทำสิ่งนี้:

 SubIndexMatchMultiple ()
    Range(" F3 ").Value = WorksheetFunction.Index(Range(" C2:C10 "), _
    WorksheetFunction.Match(Range(" F1 "), Range(" A2:A10 "), 0) + _
    WorksheetFunction.Match(Range(" F2 "), Range(" B2:B10 "), 0) - 1)
End Sub

เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:

มาโครค้นหา “Spurs” ในคอลัมน์ Team และ “Forward” ในคอลัมน์ Position และส่งกลับชื่อ “Eric” ในเซลล์ F3 อย่างถูกต้อง

หากเราเปลี่ยนค่าในเซลล์ F1 และ F2 แล้วเรียกใช้มาโครอีกครั้ง จะสามารถค้นหาชื่อผู้เล่นตามค่าใหม่ได้

ตัวอย่างเช่น สมมติว่าเราเปลี่ยนชื่อทีมเป็น “Mavs” และตำแหน่งเป็น “Center” และเรียกใช้มาโครอีกครั้ง:

มาโครค้นหา “Mavs” ในคอลัมน์ Team และ “Center” ในคอลัมน์ Position และส่งกลับชื่อ “Chad” ในเซลล์ F3 อย่างถูกต้อง

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:

VBA: วิธีใช้การจับคู่ดัชนี
VBA: วิธีตรวจสอบว่าสตริงมีสตริงอื่นหรือไม่
VBA: วิธีนับจำนวนแถวในช่วง

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *