VBA编程删除Excel中符合多重条件的行

2025-09-20 23:44:06

1、这里有个人事信息表(里面的信息纯属虚构如有巧合敬请见谅)。我们把每一行人员的信息称作一条记录。要把年龄小于18岁的、或年龄大于60岁的、或学历是高中以下的记录删除。我们先来做一件事:编个程序把符合条件的记录标上颜色,就像表中的那样,通过这个程序理一下思路,也为下一步做个准备。

VBA编程删除Excel中符合多重条件的行

2、给符合条件的记录标色

右击工作表标签-->查看代码-->在弹出的VBA代码窗口中输入下面的程序

Sub ColRec()

Dim EndRow As Single  '定义变量,用于存放最后一行行号。

EndRow = Range("a65535").End(xlUp).Row

UsedRange.Interior.ColorIndex = 0  '初始化,表中底色恢复默认值。

For i = 2 To EndRow  '遍历工作表的每条记录,i为记录号的变量

   If Cells(i, 2) > 60 Or Cells(i, 2) < 18 Or Cells(i, 3) = "高中以下" Then

      Range("a" & i & ":c" & i).Interior.ColorIndex = 37

   End If

Next i

End Sub

按下F5执行。

VBA编程删除Excel中符合多重条件的行

3、这段程序是通过For循环对每条记录都过一遍,看是否满足这个条件:

Cells(i, 2) > 60 Or Cells(i, 2) < 18 Or Cells(i, 3) = "高中以下"

其实是用“或”连接的三个条件,只要满足其中一个就算满足。如果条件满足就执行这条语句:

Range("a" & i & ":c" & i).Interior.ColorIndex = 37

这条语句就是给满足条件的记录标底色的。

4、删除符合条件的记录

接下来要做的是把标了色的记录删掉。是不是把标色语句改成删除语句就OK了呢?

Range("a" & i & ":c" & i).Interior.ColorIndex = 37

改成

rows(i).delete

试试看!

结果是没有删除干净!删除了一部分,这是怎么回事呢?

VBA编程删除Excel中符合多重条件的行

5、来分析一下删除的过程:比如删除了第5行,后面的内容上移,第6行上移变成第5行,而此时循环变量i增1下移一条记录移至第6行,第5行被跳过没有处理。原来是循环变量在作怪,找到原因就好办了。

我们在执行语句 rows(i).delete 后面加一条:i=i-1  。这样,当删除一条记录后让i退回原来的值,也就是停留在上移补位的那条记录上。问题解决了!看一下这次的运行结果!

VBA编程删除Excel中符合多重条件的行

6、下面是最终的程序:

Sub DelRow()

Application.ScreenUpdating = False  '程序执行期间停止屏幕刷新

Dim EndRow As Single  '定义变量,用于存放最后一行行号。

EndRow = Range("a65535").End(xlUp).Row

For i = 2 To EndRow  '遍历工作表的每条记录,i为记录号的变量

   If Cells(i, 2) > 60 Or Cells(i, 2) < 18 Or Cells(i, 3) = "高中以下" Then

      Rows(i).delete

      i = i - 1

   End If

Next i

Application.ScreenUpdating = True

End Sub

VBA编程删除Excel中符合多重条件的行

7、也可以用While循环实现,作用一样,只是程序读起来容易理解一些。

Sub DelRow()

Application.ScreenUpdating = False

Dim EndRow As Single  '定义变量,用于存放最后一行行号。

EndRow = Range("a65535").End(xlUp).Row

i = 2  '循环变量初始化

While i <= EndRow  '遍历工作表的每条记录,i为记录号的变量

   If Cells(i, 2) > 60 Or Cells(i, 2) < 18 Or Cells(i, 3) = "高中以下" Then

      Rows(i).delete

   Else

      i = i + 1

   End If

Wend

Application.ScreenUpdating = True

End Sub

祝您愉快!

VBA编程删除Excel中符合多重条件的行

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢