2015-04-01 6 views
0

Я пытаюсь использовать переменную в функции offset() и match(). Но это не сработает.Смещение + совпадение с переменной vba

For Each Valid_type In Valid_sec_type_range 

'test = Valid_sec_type_range.Cells(1, Valid_type_index).Value 
'test1 = Chr(34) & Valid_type & Chr(34) 

new_range = [OFFSET(Market_value_range,MATCH(Valid_type,sec_type,0)-1,0,COUNTIF(sec_type,Valid_type),1)] 

и когда я использую это работает, кажется, что матч функции и смещение не признают Valid_type в виде строки.

For Each Valid_type In Valid_sec_type_range 

'test = Valid_sec_type_range.Cells(1, Valid_type_index).Value 
'test1 = Chr(34) & Valid_type & Chr(34) 

new_range = [OFFSET(Market_value_range,MATCH("Asset Backed",sec_type,0)-1,0,COUNTIF(sec_type,"Asset Backed"),1)] 

ответ

0

new_range = [OFFSET(...)] является синтаксический сахар для этого:

new_range.Value = Application.Evaluate("[OFFSET(...)]") 

да так, ваше имя переменной понимается как буквенная строка, которая затем понимается как имя диапазона, и вы не имеете диапазон этого имени.

Если вы используете VBA, то сделать это в пути VBA:

new_range.Value = Market_value_range.Offset(Application.WorksheetFunction.Match(Valid_type.Value, sec_type, 0) - 1, 0).Resize(Application.WorksheetFunction.CountIf(sec_type, Valid_type.Value), 1) 
+0

Спасибо за вашу помощь! Но он говорит: Ошибка времени выполнения 1004, Невозможно получить свойство соответствия класса рабочей таблицы. –

+0

Это означает, что 'Valid_type.Value' не может быть найден в диапазоне' sec_type'. – GSerg

Смежные вопросы