2016-08-19 2 views
1

Я используюКак найти первую ячейку, которая содержит данные относительно столбца?

lastRowIndex = .Cells(.Rows.Count, "A").End(xlUp).row 

найти последнюю строку с данными.

Как найти первую строку? Я нашел код с activesheet.usedrange, но он не работает для меня, так как для столбца b первые данные начинаются со второй строки, но в столбце A он начинается с 4-й строки. Мне нужна функция, которая находит мне номер 4.

+1

'firstRowIndex = .Cells (1," A "). End (xlDown) .row' и обрабатывать строку возможностей 1 содержит данные –

ответ

0

альтернативный вариант без использования CountA() является следующее:

Function firstrow2(col As Range) As Long 
    Dim f As Range 
    Set f = col.Find("*", after:=col.Cells(col.Parent.Rows.Count)) '<--| look for any value in given column from its row 1 (included) downwards 
    If Not f Is Nothing Then firstrow2 = f.Row '<--| if found then return its row index 
End Function 

который возвращается 0, если нет данных в пройденной колонке

Вы должны сделать это немного более прочным и обработать неправильный пройденный диапазон (не весь столбец или более широкий, чем столбец), вы можете использовать следующее:

Function FirstRow(col As Range) As Long 
    Dim f As Range 
    With col.Columns(1).EntireColumn 
     Set f = .Find("*", after:=.Cells(.Rows.Count)) '<--| look for any value from row 1 (included) 
    End With 
    If Not f Is Nothing Then FirstRow4 = f.Row '<--| if found then return its row index 
End Function 
1
Dim col As Range 
Set col = Columns(10) 

If Application.CountA(col) > 0 Then 
    Debug.Print "first data: " & col.Find("*", after:=col.Cells(Rows.Count)).Row 
Else 
    Debug.Print "no data" 
End If