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

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

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