2016-01-21 5 views
0

Я думаю, что я близок, но ... Мне нужно «LR», чтобы отобразить номер следующей строки в формуле. Есть идеи?EXCEL VBA: Как использовать переменную в формуле для функции INDEX

'Get the next row number 
LR=ws.Cells(Rows.Count, 1).End(xlUp).Offset(1,0.Row 

'If LR above is 25...then I need cell D:25 to contain =INDEX(E25:P25,MATCH(TRUE,INDEX((E25:P25<>0),0),0)) 

ws.Range("D" & LR) = "=INDEX(E[LR]:P[LR],MATCH(TRUE,INDEX((E[LR]:P[LR]<>0),0),0))" 

Я ценю ваше время.

+0

Кстати, если вы не уверены, что строка будет выводить, вы всегда можете использовать 'Debug.print ', ваша строка идет здесь'' и проверяет, получаете ли вы то, что хотите. Результат появится в * Немедленном окне * под вашим кодом. Если вы его не видите, включите его на вкладке * View * или нажав * Ctrl + G *. –

ответ

0

Попробуйте это:

ws.Range("D" & LR) = "=INDEX(E" & LR & ":P" & LR & _ 
        ",MATCH(TRUE,INDEX((E" & LR & ":P" & LR & _ 
        "<>0),0),0))" 

Проблема заключается в том, что вы не получаете значениеLR но строка "LR". Если вы хотите получить значение, вы должны использовать символ &, как и в ws.Range("D" & LR).

+0

Это было прекрасно! Спасибо за совет Debug.print. –

+0

Добро пожаловать! У меня также были проблемы со строками, когда я начал, и Debug.Print был самым простым способом проверить мои строки. хорошо использовать его! –

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