Индекс соответствия Excel 2010 VBA - PullRequest
2 голосов
/ 28 сентября 2011

Перепробовал все и не могу этого понять. Попытка заменить значения в строке B (SiteTag) одного листа на соответствующий тег сайта из совпадения индекса на другом листе.

Рабочий лист (Site_Visit) SiteTag AL27 AS26 GBEM4 ...

Рабочий лист (Сайты) SiteTag Название проекта 203AL27 AL27 203AS26 AS26 201GBEM4 GBEM4 ... ...

Мне нужно заменить значения SiteTag в Sheets («Site_Visit») на соответствующие SiteTag from Sheets («Сайты»).

Пока я просто пытался заставить код поместить правильное значение индекса в переменную, в которую я поместил бы значение для каждой ячейки, и запустить его в цикле. Но за жизнь я не могу получить это, чтобы получить ценность. Это то, что я пробовал для переменной (все было объявлено).

ST_Cells2 = Application.WorksheetFunction.Index("Sites!A2:A34", Application.WorksheetFunction.Match("Site_Visit!B2", "Sites!B2:B34", 0), 0)

Где "Сайты! A2: A34" - это диапазон для соответствующего значения замены "Sites_Visit! B2" - это значение поиска «Сайты! B2: B34» - это диапазон поиска

Я получаю ошибку времени выполнения '1004' Unable to get the Match property of the WroksheetFunction class. У кого-нибудь есть идеи?

Ответы [ 2 ]

4 голосов
/ 28 сентября 2011

Функции Index и Match ожидают диапазоны, но вы отправляете им строки.Самый простой способ превратить строки в диапазоны - использовать функцию Range в Excel:

st_cells2 = Application.WorksheetFunction.Index(Range("Sites!A2:A34"), Application.WorksheetFunction.Match(Range("Site_Visit!B2"), Range("Sites!B2:B34"), 0), 0)
0 голосов
/ 11 декабря 2014

У меня была та же ошибка, но она работала нормально, когда я переключился на «Приложение» вместо WorksheetFunction:

Cells(12, 12).Value = Application.Index("Sheet1!B1:9", 2)

Каким-то образом прямой запуск функции из приложения ... / K

...