Представьте себе следующие данные:

Если вы хотите найти первые 2 пробела, вы можете использовать .SpecialCells(xlCellTypeBlanks)
, чтобы пополнить все пробелы в вашем диапазоне (здесь столбец A). Это превратит что-то вроде выделенных ячеек в изображение. Есть 6 выбранных областей, к которым вы можете получить доступ .SpecialCells(xlCellTypeBlanks).Areas
.
Так что, если мы пройдем по всем этим областям For Each Area In .Areas
и проверим их количество строк If Area.Rows.Count >= 2
, мы можем легко найти область с 2 строками (или хотя бы 2 рядами).
Количество строк (пустых или нет) равно Area.Row - AnalyzeRange.Row
Итак, мы получаем:
Option Explicit
Sub TestCount()
MsgBox CountRowsUntilTwoBlanks(Worksheets("Sheet1").Range("A:A"))
End Sub
Function CountRowsUntilTwoBlanks(AnalyzeRange As Range) As Long
Dim Area As Range
For Each Area In AnalyzeRange.SpecialCells(xlCellTypeBlanks).Areas
If Area.Rows.Count >= 2 Then 'if 2 or more then use >=2, if exactly 2 use =2
CountRowsUntilTwoBlanks = Area.Row - AnalyzeRange.Row
Exit For
End If
Next Area
End Function
Так что для этого примера он вернет 16
строк.
Обратите внимание, что если ваша цель - найти последнюю использованную строку, которая в этом примере будет строкой 20, тогда вы можете просто использовать ...
Dim LastRow As Long
With Worksheets("Sheet1")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
… чтобы найти последнюю использованную строку в столбце A. Здесь LastRow
возвращает 20
.