在Excel中获取指定范围的最后一行

时间:2019-01-02 21:06:19

标签: excel vba excel-vba

如何获取已指定和定义的范围的最后一行,并且已知包含所需的数据?在我看来,这应该是Range.Row之类的属性,但是Range.Row给出范围内的第一行号,而我希望 最后 行号。

现在的问题是我的范围不在源工作表的第1行开始-实际上是从第3行开始并经过756行。下面是调试器查看的我的范围地址,并且定义正确。但是由于它从第3行开始使用Rows.Count将不起作用,因为它的结果是754,而不是756。

Rows.Count是对范围的引用,该范围是原始图纸的子集。我想要原始电子表格中最后一行的行号,与下面的地址完全相同。换句话说,“地址”上有一些属性可以给我756吗?

transData = transactionsDataRange.Address

: transData : "$A$3:$AP$756" : Variant/String

调试器中显示的地址正确。我想要做的就是提取指定范围内右下单元格的行值(即756)。我可以解析地址值,并在需要时执行该操作,但是我想知道Excel VBA是否具有更简单的方法实现这一目标?

4 个答案:

答案 0 :(得分:4)

一种替代方法

Sub x()

Dim transactionsDataRange As Range

Set transactionsDataRange = Range("$A$3:$AP$756")

MsgBox transactionsDataRange.Rows(transactionsDataRange.Rows.Count).Row

End Sub

答案 1 :(得分:2)

使用

Dim LstRow as Long
LstRow = transactionsDataRange.Row + transactionsDataRange.Rows.Count - 1

enter image description here

答案 2 :(得分:0)

Sub TestMe()        
    Dim myRange As Range
    Set myRange = Worksheets(1).Range("D10:D15")
    Debug.Print myRange.Rows.Count + myRange.Row - 1        
End Sub

它显示15。myRange.Rows.Count是6,myRange.Row是10。或者,如果您喜欢1行功能,可以这样:

Sub TestMe()
    Debug.Print LastRowOfRange(Range("D15:E199"))
End Sub

Function LastRowOfRange(myRange) As Long
    LastRowOfRange = myRange.Rows.Count + myRange.Row - 1
End Function

答案 3 :(得分:0)

指定范围中的最后一个单元格。

Sub test()
    Dim transactionsDataRange As Range
    Dim rngT As Range

    Set transactionsDataRange = Range("$A$3:$AP$756")
    With transactionsDataRange
        Set rngT = .Cells(.Rows.Count, .Columns.Count)
    End With
    MsgBox rngT.Row
End Sub