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