2013-11-20 1 views
0

У меня есть код, который ищет значение в диапазоне и получает соответствующее значение из ячейки excel. Но я также хочу получить ссылку на ячейку (адрес ячейки) следующего столбца. Как я могу это получить?Получить адрес ячейки, используя код VBA при использовании Vlookup

Мой код для получения значения с помощью ВПР является:

BCVE(i + 1) = WorksheetFunction.VLookup(A(i + 1), MySheet.Range("B2:E8"), 2, False) 

Теперь мне нужно, чтобы получить адрес ячейки 4-го столбца той же строки, что в колонке Е. Я попытался ниже индекса и Функции матча, но не удача! Он выдает ошибку

"Unable to get the Match property of the WorksheetFunction Class" - Run-time error 1004. 

Я попытался заменить Workfunction.Match с Application.Match, но он не работает.

CellAdd1 = WorksheetFunction.Index(MySheet.Range("E2:E8"), WorksheetFunction.Match(A(i + 1), MySheet.Range("B2:E8"), 0), 4, 1) 

ответ

0

Worksheetfunction.Match следует использовать на одной колонке. Вы используете его в нескольких столбцах.

Например, если переменная CellAdd1 является объектом диапазона, вы можете найти ячейку в 4-м столбце в той же строке с помощью следующей строки, и ссылаться на адрес ячейки с CellAdd1.Address:

Set CellAdd1 = Cells(WorksheetFunction.Match(A(i+1), MySheet.Range("B2:B8"), 0) +1, "E") 

Я добавил '+ 1, так как функция возвращает относительную позицию элемента в массиве, и ваш массив/диапазон начинается в строке 2.