需求
筛选excel表单数据,筛选条件为一组电话号码
一般思路,是通过Critl+F快捷键,调出查找和替换选项框,通过手动输入的形式一个个对照着电话号码输入到表单中,然后通过比较一个个筛选出来,过程过于繁琐
vba 脚本
excel表格自带了开发工具,可用通过vba脚本的形式,实现批量筛选
前置工作
默认情况下,excel是不会显示开发工具选项的,首先要调出该选项
步骤:
文件 → 选项 → 自定义功能区勾选上开发工具,即可显现该功能选项卡
在开发工具选项卡上点击Visual Basic就可以调出编辑器,进行代码编写
或者使用快捷键 Alt+F11
需求1:批量查询数据
需求:
假设根据一组电话号码,剔除出源数据表单中与之对应的行
筛选条件组:
- 电话号码
13001791310
13011722206
13011771600
13011775361
13011777627
13011778063
13011782456
13011784149
13011789450
13012741471
13012744466
13012749111
操作思路
- 将筛选条件(电话号码)放在新的表中(假设命名为sheet2),新建表作为输出数据表(sheet3),假设源数据表单为sheet1
- 通过For循环,比较sheet1和sheet2,属性(列)电话不相等的元组(行),则输入到sheet3中
参考vba脚本
- Sub 批量查询()
- Dim 表1行, 表2行, 行, 列 As Integer
- Dim 矢量 As Boolean
- '清理表3数据
- Sheet3.Range("A2:C200").Clear
- 行 = 2
- '筛选条件查询
- For 表1行 = 2 To Sheet1.Rows.Count
- 矢量 = False
- '查询区域循环
- For 表2行 = 2 To Sheet2.Rows.Count
- If Sheet1.Cells(表1行, "B") = Sheet2.Cells(表2行, "B") Then
- 矢量 = True
- Exit For
- End If
- If Cells(表2行, "B") = "" Then 表2行 = Rows.Count
- Next 表2行
- '输入区域循环
- If 矢量 = False Then
- For 列 = 1 To 3
- Sheet3.Cells(行, 列) = Sheet1.Cells(表1行, 列)
- Next 列
- Else
- 行 = 行 - 1
- End If
- 行 = 行 + 1
- If Cells(表1行, "B") = "" Then 表1行 = Rows.Count
- Next 表1行
- End Sub
复制代码 需求2:多条件批量查询
需求:
① 在需求1的基础上,加入姓名、性别等条件都要一致的需求
操作思路
类似电话筛选条件,只需要在控制sheet2的筛选条件就可以,即IF多加几个条件,可以使用and 关键字做多条件查询
- If Sheet1.Cells(表1行, "B") = Sheet2.Cells(表2行, "B") and _
- Sheet1.Cells(表1行, "A") = Sheet2.Cells(表2行, "A") Then
- 矢量 = True
- Exit For
- End If
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |