Vba: วิธีใช้การจับคู่ดัชนี
คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อดำเนินการ INDEX MATCH ใน VBA:
SubIndexMatch ()
Dim i As Integer
' Perform index match
For i = 2 To 11
Cells(i, 5).Value = WorksheetFunction.Index(Range(" A2:A11 "), _
WorksheetFunction.Match(Cells(i, 4).Value, Range(" B2:B11 "), 0))
Next i
End Sub
ตัวอย่างนี้ค้นหาค่าในเซลล์ 2 ถึง 11 ของคอลัมน์ที่สี่ของแผ่นงานในช่วง B2:B11 แล้วส่งกลับค่าที่สอดคล้องกันในช่วง A2:A11 ในคอลัมน์ที่ห้าของแผ่นงาน
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่าง: ดำเนินการ INDEX MATCH โดยใช้ VBA
สมมติว่าเรามีชุดข้อมูลต่อไปนี้ใน Excel ที่มีข้อมูลเกี่ยวกับผู้เล่นบาสเก็ตบอล:
สำหรับผู้เล่นแต่ละคนในคอลัมน์ D สมมติว่าเราต้องการค้นหาชื่อทีมของพวกเขาในคอลัมน์ A จากนั้นเขียนชื่อทีมในคอลัมน์ E
เราสามารถสร้างมาโครต่อไปนี้เพื่อทำสิ่งนี้:
SubIndexMatch ()
Dim i As Integer
' Perform index match
For i = 2 To 11
Cells(i, 5).Value = WorksheetFunction.Index(Range(" A2:A11 "), _
WorksheetFunction.Match(Cells(i, 4).Value, Range(" B2:B11 "), 0))
Next i
End Sub
เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:
โปรดทราบว่ามาโครนี้สามารถค้นหาชื่อผู้เล่นแต่ละคน จากนั้นส่งคืนชื่อทีมที่เกี่ยวข้องในคอลัมน์ E
โปรดทราบว่าภายในลูป For ไวยากรณ์ Cells(i,5).value ระบุว่าเราต้องการให้ส่งกลับชื่อทีมในคอลัมน์ที่ห้าของสเปรดชีต นั่นคือคอลัมน์ E
หากเราเปลี่ยนไวยากรณ์นี้เป็น Cells(i,6).value ชื่อทีมจะถูกส่งกลับในคอลัมน์ที่หกของสเปรดชีต:
SubIndexMatch ()
Dim i As Integer
' Perform index match
For i = 2 To 11
Cells(i, 6).Value = WorksheetFunction.Index(Range(" A2:A11 "), _
WorksheetFunction.Match(Cells(i, 4).Value, Range(" B2:B11 "), 0))
Next i
End Sub
เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:
โปรดทราบว่าขณะนี้ชื่อทีมถูกส่งกลับมาในคอลัมน์ที่หกของสเปรดชีต (คอลัมน์ F)
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:
VBA: วิธีตรวจสอบว่าสตริงมีสตริงอื่นหรือไม่
VBA: วิธีนับจำนวนแถวในช่วง
VBA: วิธีเขียนฟังก์ชัน COUNTIF และ COUNTIFS