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: วิธีนับจำนวนแถวในช่วง