В моем макросе есть строка:

Selection.AutoFill Destination:=Range("A2:A86893")

но конечный номер ячейки (86893), представляющий собой общее количество строк в моих данных, должен изменяться при каждом запуске макроса. Мне нужен этот макрос, так как мой объем данных увеличивается с каждым разом, но до сих пор мне приходилось менять адрес вручную.

Можно ли поместить формулу вместо номера ячейки в определение диапазона, что-то вроде:

A2:A(counta(b:b))

где формула counta(b:b) дает мне общее количество строк.

2 ответа2

0

Да, вам просто нужно создать строку, которая даст адрес диапазона. В вашем случае вы можете сделать что-то вроде:

Range("A2:A" & CStr(Evaluate("=CountA(B:B)"))

Чтобы определить диапазон, который вы хотите заполнить.

В качестве дополнительного совета вы должны стараться избегать использования Select -statements при определении ваших диапазонов. Попробуйте это для интересного чтения.

0

Чтобы найти последнее значение в вашем диапазоне, используйте этот простой фрагмент -

Dim lrow As Integer
lrow = Cells(Rows.Count, "B").End(xlUp).Row

Теперь вы можете использовать его в своем диапазоне, например Range("A2:A"&lrow)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .