Excel VBA 代码删除数据列(行)的空白行(列)

在处理Excel表格数据时,有时候需要批量删除某一列数据中的空白行,此时可以有两种方案用VBA 进行操作:

1.用Excel自带的函数进行删除;
2.用循环的方法逐行删除;

下面结合实例来看看两种方法如何达到目的。

Case:需要删除工作表Sheets(“Data”)内的大量空白行。

1>.用Excel自带的函数进行删除

sub Del_rows()	

Sheets("Data").Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete	

end sub

上述代码用Excel自带的函数进行删除,一行代码即可实现目的,简洁高效,而且速度也比较快(提高代码运行速度常用方法之一),但是缺点是不够灵活,如果某行部分单元格为空,该方法就不适用了。

2>用循环的方法逐行删除

sub Del_rows()	
Imax=Sheets("Data").range("A100000").end(xlup).Row
    For m = 1 To Imax

        If Sheets("Data").Cells( m , 1) = "" Then
            Rows(m).Delete
            m = m - 1
            Else
        End If
    Next m
    
end sub    

上述代码用循环进行判断然后进行逐行删除,用if进行判断灵活性较大,但是多次循环在复杂的程序结构中显得比较冗杂和低效,而且需要注意循环计数,防止误删。

对于循环的办法,用二维数组可以提高代码运行速度的同时也可以实现相同的目的。

sub Del_rows()	
Dim Ar as variant
Dim Imax as integer, m as integer
Imax=Sheets("Data").range("A100000").end(xlup).Row
Ar=Sheets("Data").range("A1",[A100000].end(xlup))

	k=0
    For m=1 to Imax
        If Ar(m,1) = "" Then
            Rows(m-k).Delete
            k=k+1
            Else
        End If
    Next m

end sub  

用二维数组代码同样比较冗杂,但是速度已经快很多,这在复杂的程序设计中也是一种提高运行速度的办法。对于代码中的计数,还可以采用如下方法:

sub Del_rows()	
Dim Ar as variant
Dim Imax as integer, m as integer

Imax=Sheets("Data").range("A100000").end(xlup).Row
Ar=Sheets("Data").range("A1",[A100000].end(xlup))
    For m=1 to Imax
        If Ar(m,1) = "" Then
            Rows(m).Delete
            m = m - 1
            Else
        End If
    Next m

end sub  

以上的办法可以实现批量删除excel中的空白行,如果想删除空白列将代码中的column换成rows,或者循环变量行换成列(1,m)及删除行换成Columns(m).Delete即可。

两种实现方法各有利弊,需要结合自己的应用场景进行选用,同时,代码的灵活性和速度也是需要进行考量的方面,更简洁、更灵活、运行速度更快的代码才能让我们的工作事半功倍,这也是VBA在Excel中高效实现复杂功能的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值