Как преобразовать формулу Excel в макрос vba код

Как преобразовать формулу Excel в макрос vba код

Как преобразовать нижеприведенный код в макрос vba? =ИНДЕКС(КЛАССИФИКАЦИЯ,ПОИСКПОЗ(ИСТИНА,ИСХОДЯЩИЙ(ПОИСК(ИМЯ,O12)),0))

У меня есть столбец (O) в Sheet1, в котором нужно выполнить поиск. У меня есть два столбца в sheet2, которые определены с именем (Имена и Классификация). Когда имя найдено в столбце O Sheet1, столбец P имеет соответствующее значение из классификации Sheet2

Лист 1, столбец O, нашего клиента зовут Джон Доу.

Лист2 Название Классификация Джон Доу Класс А

Столбец P Листа1 будет иметь значение Класс A

Пожалуйста помоги!

решение1

Поскольку данные выборки недоступны, я предполагаю,

  • Sheet 1Столбец O, Имена для поиска O2:O10.
  • Sheet 2имеет Clasification & Names, находятся Named rangeв A2:A10& B2:B10.
  • Вам нужны результаты в P2:P10диапазоне Sheet1.

Сначала я хотел бы предложить, как назначить формулу Excel коду VBA.

Range("P2").FormulaArray = "=IFERROR(INDEX(Clasification,MATCH(TRUE,ISNUMBER(SEARCH(Names,O2)),0)),""No Found"")"

Примечание.Вам нужна формула массива (CSE), чтобы ее .FormulaArrayможно было использовать.


Но поскольку Named Rangeis/are необходимо объявлять при использовании макроса VBA, я хотел бы порекомендовать вам следующий код для использования в качестве Standard Module.

Sub Formula()

Dim Clasification As Range
Dim Names As Range


 Set Clasification = Sheets("Sheet2").Range("A2:A10")
 Set Names = Sheets("Sheet2").Range("B2:B10")


Range("P2").FormulaArray = "=IFERROR(INDEX(Clasification,MATCH(TRUE,ISNUMBER(SEARCH(Names,O2)),0)),""No Found"")"
Range("P2:P10").FillDown
End Sub

При необходимости измените ссылки на ячейки и именованные диапазоны в коде.

Связанный контент