У меня есть два набора диапазонов с именами LIST_KEY
и LIST_CAT
. В столбце A пользователь добавит некоторые данные, которые будут содержать один из текста из LIST_KEY
. Я хотел бы получить соответствующий список категорий из LIST_CAT
в зависимости от значения ключа

Я использую приведенный ниже код VBA для достижения этой цели. Это включает формулу Array.
Sub match()
Dim ss As Workbook
Dim test As Worksheet
Set ss = Excel.Workbooks("test.xlsm")
Set test = ss.Worksheets("Sheet1")
For i = 2 To test.Cells(Rows.Count, "A").End(xlUp).Row
Cells(i, "B").FormulaArray = "=INDEX(LIST_CAT,MATCH(TRUE,ISNUMBER(SEARCH(LIST_KEY,RC[-1])),0))"
Cells(i, "B").Formula = Cells(i, "B").Value
Next i
End Sub
Этот код отлично работает, если для извлечения данных требуется меньше данных. Но в моем исходном случае у меня будет около 8000 строк. Из-за этого большого количества столбцов Excel будет go не отвечать на запросы через 2-3 минуты.
Вместо добавления формулы массива в столбец B, есть ли возможность преобразовать ее в VBA для более быстрой работы. Извините, я новичок в этом VBA и не имею большого опыта