VBA—EXCEL操作集合—04

本文分享了四种在VBA中获取Excel指定Sheet有数据单元格最后一行行号的方法,包括For循环、.UseRange、Range().End(xlDown)和Range().End(xlUp),并分析了各自的适用场景和不足之处。这些经过调试的代码片段适用于不同的数据情况,有助于提升数据处理效率。

大家好,我接着给大家去介绍VBA的一些小功能,希望对大家在平时的工作中能有所帮助。

我文章中的代码都是经过调试过的,复制过去是可以直接运行的,欢迎大家复制使用。

在我们实际工作中,经常要面临处理各种数据表格,里面有一个小功能就是,我如何能获取到指定Sheet中的有数据单元格的最后一行的行号是多少。

 现在我把获取行号的几种方法共享给大家,每个方法都有其缺点,大家在实际工作中,可以有选择地去使用。

方法1:通过VBA的For循环获取到最后行号

Function getEndRowNumberByForLoop()
    Dim num, i
    Dim srcWorkSheet As Worksheet
    Dim strVal As String
    
    Set srcWorkSheet = ThisWorkbook.ActiveSheet
    num = srcWorkSheet.Rows.Count
    For i = 1 To num
        strVal = srcWorkSheet.Range("A" & i).Value
        If strVal = "" Then
            Exit For
        End If
    Next i
    
    MsgBox "A列的最大行号是:" & (i - 1)
End Function

 不足点:

仅适用于数据量小的情况,数据量大了之后,循环起来很慢。

2、使用.UseRange方式获取最大行号

请大家注意看,我最后一行只是填充了背景色,并没有输入任何值,这个方法会认为这个单元格是非空单元格。所以获取到的最大行号是19。

 

Function getEndRowNumberByUseRange()
    Dim num
    Dim srcWorkSheet As Worksheet
    
    Set srcWorkSheet = ThisWorkbook.ActiveSheet
    num = srcWorkSheet.UsedRange.Rows.Count
    
    MsgBox "A列的最大行号是:" & num
End Function

3、使用Range().End(xlDown)方法获取最后行号

当我们某一列的数据都是连续数据,也就是说中间没有出现空白数据的时候,通过这个方法是可以获取到最大行号的。

 但是,如果某一列的数据不是连续数据,这个方法就无法正常获取到正确的最大行号。如下图所示:

Function getEndRowNumberByRangeEndxlDown()
    Dim num_down
    Dim srcWorkSheet As Worksheet
    
    Set srcWorkSheet = ThisWorkbook.ActiveSheet
    num_down = srcWorkSheet.Range("A1").End(xlDown).Row
    
    MsgBox "A列最大行号(xlDown):" & num_down
    
End Function

 4、使用Range().End(xlUp)方法获取最后行号

如果我们某一列的数据中间出现空白行,可以用下面的方法获取到正确的最大行号。

Function getEndRowNumberByRangeEndxlUp()
    Dim num_up
    Dim srcWorkSheet As Worksheet
    
    Set srcWorkSheet = ThisWorkbook.ActiveSheet
    num_up = srcWorkSheet.Range("A" & srcWorkSheet.Rows.Count).End(xlUp).Row
    
    MsgBox "A列最大行号(xlUp):" & num_up
    
End Function

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

02年程序员飞鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值