利用VBA对Excel数据进行查询或筛选,实际上,指的就是对数据的读取与分析判断,符合条件的给予相应的操作,不符合的数据可不做任何操作!
本文,举个例子,大体介绍该类用法的操作!
下面的例子,所要实现的目标是,对学生成绩进行查询并进行判断,将成绩小于70分的人员学号与成绩存放到另外一个表!
如下图,是一张学生成绩表!该表第一表,名称为Sheet1,序号为1;
如下图,为第二表,名称为Sheet 2,序号为2;
对照以上两图,下面我们就着手来操作吧!将表一中成绩小于70的人员学号与分数填充到表二中;
选择表一,按快捷组合键“Alt+F11”进入到VBA代码编辑窗口!
之后,按上图操作,在“Sheet 1(Sheet1)”上方点击右键,执行“查看代码”;弹出代码编辑窗口,然后在代码编辑窗口中选择好“Worksheet”和与之对应的右边的选项;最后输入如上的代码即可!
该代码及事件的功能是:在表一中,只要选择了任何一个单元格,触发事件,就执行代码,将成绩小于70的人员的相关数据填充到表二中!
如下图,为最终结果图!
代码简介:
①读取单元格数据通用格式
Worksheets(2).Cells(NoPass, 1).Value,此为数据引用方式,其格式是:Worksheets(“表名或序号“).Cells(“行序号“, “列序号“).Value;
②全部代码解释
Dim NoPass
NoPass = 3 '变量定义,用于填充至表二的行序号,由于本例从第三行开始填充,所以默认值为3
For i = 2 To 10000 '利用循环读取表一数据,从第二行读到100000行;
If (Worksheets(1).Cells(i, 4).Value < 70) Then '判断读取的单元格数据是否小于70
Worksheets(2).Cells(NoPass, 1).Value = Worksheets(1).Cells(i, 2).Value
'将表一第2列对应的行数据填充到表二第1列对应的行;
Worksheets(2).Cells(NoPass, 2).Value = Worksheets(1).Cells(i, 4).Value
'将表一第四列对应的行数据填充到表二第2列对应的行;
NoPass = NoPass + 1 '填充至表二行的步长值!
End If
Next