Sub find_last_row() Dim lr As Long, arr As Variant With ActiveSheet lr = .Cells(.Rows.Count, 2).End(xlUp).Row ' определяем последнюю ячейку 2 столбца активного листа arr = .Range("B2:B" & lr) ' загоняем второй столбец в массив, начиная со 2 строки MsgBox UBound(arr, 1) ' выводим количество строк End With End Sub
[/vba]
Мурад, приветствую! Можно, например так: [vba]
Код
Sub find_last_row() Dim lr As Long, arr As Variant With ActiveSheet lr = .Cells(.Rows.Count, 2).End(xlUp).Row ' определяем последнюю ячейку 2 столбца активного листа arr = .Range("B2:B" & lr) ' загоняем второй столбец в массив, начиная со 2 строки MsgBox UBound(arr, 1) ' выводим количество строк End With End Sub
jun, спасибо, что откликнулись! Я направил упрощенный пример. На самом деле надо попытаться определить количество строк по первой колонке, которая выступает "сложным" случаем.
jun, спасибо, что откликнулись! Я направил упрощенный пример. На самом деле надо попытаться определить количество строк по первой колонке, которая выступает "сложным" случаем.Мурад
Еще несколько вариантов: - если нужно посчитать непустые ячейки в столбце: [vba]
Код
Sub find_not_empty_rows() Dim lr As Long, arr As Variant, i As Long, iCnt As Long With ActiveSheet lr = .Cells(.Rows.Count, 2).End(xlUp).Row ' определяем последнюю ячейку 2 столбца активного листа arr = .Range("A2:B" & lr) ' загоняем таблицу в массив, начиная со 2 строки For i = LBound(arr, 1) To UBound(arr, 1) If arr(i, 1) <> "" Then iCnt = iCnt + 1 ' если в первом столбце ячейка не пустая, то увеличиваем счетчик Next i MsgBox iCnt End With End Sub
[/vba] или тот же макрос, что и выше, только в одну строку (-1 означает - заголовок) [vba]
Код
Sub find_last_row_2() Dim lr As Long With ActiveSheet lr = .Cells(.Rows.Count, 1).End(xlUp).Row ' определяем последнюю ячейку 1 столбца активного листа MsgBox lr - 1 End With End Sub
[/vba]
Еще несколько вариантов: - если нужно посчитать непустые ячейки в столбце: [vba]
Код
Sub find_not_empty_rows() Dim lr As Long, arr As Variant, i As Long, iCnt As Long With ActiveSheet lr = .Cells(.Rows.Count, 2).End(xlUp).Row ' определяем последнюю ячейку 2 столбца активного листа arr = .Range("A2:B" & lr) ' загоняем таблицу в массив, начиная со 2 строки For i = LBound(arr, 1) To UBound(arr, 1) If arr(i, 1) <> "" Then iCnt = iCnt + 1 ' если в первом столбце ячейка не пустая, то увеличиваем счетчик Next i MsgBox iCnt End With End Sub
[/vba] или тот же макрос, что и выше, только в одну строку (-1 означает - заголовок) [vba]
Код
Sub find_last_row_2() Dim lr As Long With ActiveSheet lr = .Cells(.Rows.Count, 1).End(xlUp).Row ' определяем последнюю ячейку 1 столбца активного листа MsgBox lr - 1 End With End Sub