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

Excel中按给定条件批量删除行,一般采用按条件排序然后手工删除的方法,但如果是多重条件,同时行数比较多得情况下,用这种方法效率太低了,累得疲惫不堪,还容易出错。而用VBA编一个简单的程序,只需一瞬间即可完成。请跟我来,凭您的聪明智慧一看便会!

操作方法

  • 01

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

  • 02

    给符合条件的记录标色 右击工作表标签-->查看代码-->在弹出的VBA代码窗口中输入下面的程序 Sub ColRec() Dim EndRow As Single EndRow = Range("a65535").End(xlUp).Row UsedRange.Interior.ColorIndex = 0 For i = 2 To EndRow 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执行。

  • 03

    这段程序是通过For循环对每条记录都过一遍,看是否满足这个条件: Cells(i, 2) > 60 Or Cells(i, 2) < 18 Or Cells(i, 3) = "高中以下" 其实是用“或”连接的三个条件,只要满足其中一个就算满足。如果条件满足就执行这条语句: Range("a" & i & ":c" & i).Interior.ColorIndex = 37 这条语句就是给满足条件的记录标底色的。

  • 04

    删除符合条件的记录 接下来要做的是把标了色的记录删掉。是不是把标色语句改成删除语句就OK了呢? Range("a" & i & ":c" & i).Interior.ColorIndex = 37 改成 rows(i).delete 试试看! 结果是没有删除干净!删除了一部分,这是怎么回事呢?

  • 05

    来分析一下删除的过程:比如删除了第5行,后面的内容上移,第6行上移变成第5行,而此时循环变量i增1下移一条记录移至第6行,第5行被跳过没有处理。原来是循环变量在作怪,找到原因就好办了。 我们在执行语句 rows(i).delete 后面加一条:i=i-1  。这样,当删除一条记录后让i退回原来的值,也就是停留在上移补位的那条记录上。问题解决了!看一下这次的运行结果!

  • 06

    下面是最终的程序: 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

  • 07

    也可以用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 祝您愉快!

(0)

相关推荐

  • 一招教你自动提取excel中符合条件的信息

    相信很多小伙伴在日常办公中都会使用到Excel,那么在其中我们怎么去设置自动提取符合条件的信息呢?方法很简单,下面小编就来为大家介绍.具体如下:1. 首先,打开Excel,在其中打开我们要进行操作的表 ...

  • 如何快速删除Excel中的常量错误值?

    相信很多小伙伴在日常办公中都会用到Excel,其中的常量错误值如何才能删除呢?方法很简单,下面小编就来为大家介绍.具体如下:1. 首先,在Excel中打开我们要进行操作的表格.2. 接着,将表格中的所 ...

  • Excel中怎么取消条件格式

    平时工作中有时候需要为Excel中的数据设置条件格式,那么在设置了条件格式之后,想要将条件格式取消,那么Excel中怎么取消条件格式呢? 操作方法 01 打开需要使用到的Excel文件. 02 打开之 ...

  • Excel中提取指定条件的不重复值的方法

    Excel中提取指定条件的不重复值的方法 话说某单位国庆员工文体活动安排,不同的员工参加有不同的项目. 现在需要看看美女小丽一共参加了几个项目. 也就是提取B列等于指定姓名的.C列不重复项. 如果用函 ...

  • 一招教你在excel中根据指定条件自动求出最大值

    相信很多小伙伴在日常办公中都会使用到excel,那么在其中我们怎么根据指定条件自动求出最大值呢?方法很简单,下面小编就来为大家介绍.具体如下:1. 首先,打开excel,在其中打开要进行操作的表格,小 ...

  • 如何通过应用SUMIFS在2016版excel中进行多条件求和?

    相信很多小伙伴在日常办公中都会用到excel,在其中如何才能使用SUMIFS进行多条件求和呢?方法很简单,下面小编就来为大家介绍.具体如下:1. 首先,在excel中打开我们要进行操作的文档.2. 小 ...

  • 如何在excel中计算满足条件的单元格人个数?

    在excel使用中,如何计算搜索指定条件的单元格个数,即只求和被满足条件的单元格个数呢? 操作方法 01 在excel中计算满足条件的单元格人个数需要用到COUNTIF函数,COUNTIF(Rang, ...

  • 如何在excel中计算指定条件的最小值

    我们利用excel计算单元格中数据的最大值最小值是非常常见的操作,但是很多时候不是简单的选中单元格用最大值最小值公式进行计算就可以的,很多时候是需要有条件的,本篇就来用实例给大家分享一下如何在exce ...

  • 如何一次性删除EXCEL中所有定义的名称

    有的时候我的EXCEL中有很多名称,而这些名称已经不再使用了,怎么样一次性删除EXCEL中所有定义的名称?如果自定义的名称的数量不多的话,一个一个删除,但是如果数量很多的话,那就麻烦多了. 操作方法 ...