如何找到包含有关列的数据的第一个单元格?

时间:2016-08-19 06:11:21

标签: excel vba

我正在使用

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

找到包含数据的最后一行。

如何找到第一行?我找到了activesheet.usedrange的一些代码,但它对我不起作用,因为对于b列,第一行数据从第二行开始,但在A列中,它从第4行开始。我需要一个能找到数字4的函数。

2 个答案:

答案 0 :(得分: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

答案 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