Извлечь адрес критерия поиска в списке, объединяющем ячейку / индекс - PullRequest
0 голосов
/ 28 мая 2020

У меня есть таблица Excel ниже:

        A             B            C            D            E         F
1     CW10          CW14         $A$5
2     CW11
3     CW12
4     CW13
5     CW14
6     CW15
7

В Column A У меня есть список календарных недель.
В Cell B1 я ввожу определенную календарную неделю, а в Cell D1 я получаю соответствующий адрес этой календарной недели в Column A.
Для этой функции в Cell C1 я использую формулу: =CELL("address",INDEX(A1:A7,MATCH(B1,A1:A7,0),0))


Теперь я хочу использовать ту же формулу в VBA. Поэтому я сначала создал его часть INDEX:

WorksheetFunction.Index(Sheet1.Range("A1:A7").Value, WorksheetFunction.Match(Sheet1.Range("B1").Value, Sheet1.Range("A1:A7").Value, 0), 0)

Эта часть уже работала отлично.


Затем я попытался добавить к нему CELL("address"):

WorksheetFunction.Cell("address", WorksheetFunction.Index(Sheet1.Range("A1:A7").Value, WorksheetFunction.Match(Sheet1.Range("B1").Value, Sheet1.Range("A1:A7").Value, 0), 0))
.Value)

Однако за это я получаю runtime error 424.

Что мне нужно изменить в моей формуле, чтобы она работала, или есть ли другая альтернатива для извлечения адреса критерия поиска в диапазоне?

1 Ответ

0 голосов
/ 29 мая 2020

Со ссылкой на комментарии есть два решения этой проблемы:


Вариант 1: Range.Find

Sub Option_01()
Range_01 = Sheet1.Range("A1:A7").Find(WorksheetFunction.Index(Sheet1.Range("A1:A7").Value, WorksheetFunction.Match(Sheet1.Range("B1").Value, Sheet1.Range("A1:A7").Value, 0), 0)).Address
Sheet1.Range("C1").Value = Range_01
End Sub

К сожалению, путем тестирования это решение с более сложными данными, у меня возникли проблемы.


Вариант 2: Application.Match

Sub Option_02()
Row = Application.Match(Sheet1.Range("B1").Value, Sheet1.Range("A1:A7"), 0) + Sheet1.Range("A1:A7").Row - 1
Range_01 = ("$" & Split(Sheet1.Range("A1:A7").Address, "$")(1)) & "$"
Sheet1.Range("C1").Value = Range_01 & Row
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...