查找特定范围内的最后一行

时间:2018-11-15 18:30:16

标签: excel vba excel-vba

在查找工作表范围的最后一行时,我需要帮助。

例如:

工作表名称为MyWorksheet

范围是A1:A200

我试图找出的是最后一个单元格的行号,该单元格的数据在MyWorksheet范围A1:A200中。

2 个答案:

答案 0 :(得分:0)

定义范围,进行设置并使用。查找

这是您要完成的工作的一个很好的例子。

Excel VBA Find row number of matching value

希望这会有所帮助。

答案 1 :(得分:0)

要考虑感兴趣范围之内和之外的所有可能的数据布局,需要考虑许多因素

  • 通常,感兴趣的范围可以是任意大小,可以在工作表上的任意位置
  • 可能在感兴趣范围附近或附近有数据
  • 兴趣范围可能完全空白
  • 是相对于感兴趣范围(或工作表)所需的“最后一行编号”
  • 注意:此代码将包含空字符串的单元格视为包含数据

Function RangeLastRow(r As Range, _
  Optional Col = 1, _
  Optional RelativeToSheet As Boolean = False) As Long

    Dim rw As Long
    With r.Cells(r.Rows.Count, Col)
        If IsEmpty(.Value2) Then
            rw = .End(xlUp).Row
            If rw < r.Row Then
                rw = r.Row
            End If
        Else
            rw = r.Row + r.Rows.Count - 1
        End If
    End With
    If IsEmpty(r.Cells(rw - r.Row + 1, Col)) Then
        ' range is empty
        rw = 0
    Else
        If Not RelativeToSheet Then
            rw = rw - r.Row + 1
        End If
    End If
    RangeLastRow = rw
End Function

将其用作工作表上的UDF,或像这样在VBA中使用

Sub Demo()
    Using default Column 1 and Relative to Sheet
    MsgBox RangeLastRow(Worksheets("MyWorksheet").Range("A1:A200"))
End Sub