Countif с выделением до последней непустой ячейки в столбце

Мой rng1 содержит только непустые ячейки до последней ячейки в столбце A. Я хочу подсчитать ячейки, превышающие значение в B1 в rng1. Однако эта формула не работала и показывала ошибку из-за пустых ячеек.

Sub CountRng1()
Dim rng1 As Range
Set rng1 = Range(Range("A2"), Range("A2").End(xlDown))
Range("C1").formula="=countif(rng1,"">""&B1)"
End Sub

таблица Excel


person Amanda S    schedule 29.04.2014    source источник


Ответы (1)


Использование xlDown крайне ненадежно. Вместо этого используйте этот:

Sub CountRng1()
    Dim lastrow As Long
    Dim rng1 As Range

    lastrow = Cells(Rows.Count, "A").End(xlUp).Row
    Set rng1 = Range("A2:A" & lastrow)
    Range("C1").Formula = "=COUNTIF(" & rng1.Address & ","">"" & B1)"
End Sub

Прочтите это, пожалуйста: Как определить последнюю использованную строку/столбец

Также я предлагаю вам полностью определить ваши диапазоны, т.е. изменить Range("A1") на ThisWorkbook.Worksheets("sheetName").Range("A1")

person Dmitry Pavliv    schedule 29.04.2014
comment
Когда я сохраняю все макросы в своей личной книге макросов, я думаю, что не обязательно полностью определять диапазоны, я прав? - person Amanda S; 29.04.2014
comment
Я бы сказал, что это делает его более необходимым, но вместо ThisWorkbook используйте ActiveWorkbook и вместо указания листа используйте ActiveSheet - person tigeravatar; 29.04.2014
comment
@AmandaS, вы правы, если вы собираетесь использовать этот макрос всегда в активном рабочем листе, просто оставьте все как есть, Set rng1 = Range("A2:A" & lastrow) - person Dmitry Pavliv; 29.04.2014