2. 打开Visual Basic,添加一个模块和过程,称之为“自动筛选”。
3. 添加自动筛选的代码,筛选的区域就是成绩数据区域,筛选列(field:=2)为第二列“班级”,筛选条件(Criteria1:=Sheet1.Range("H2"))是H2单元格的字段。
Sub 自动筛选()Sheet1.Range("A1:F30").AutoFilterfield:=2, Criteria1:=Sheet1.Range("H2")End Sub
4. 执行以上代码后,可以看到成绩区域已自动筛选出结果。
5. 添加将筛选出来的结果复制到J列至O列的代码。
6. 添加复制完结果后取消筛选的代码。
Sub 自动筛选()Sheet1.Range("A1:F30").AutoFilterfield:=2, Criteria1:=Sheet1.Range("H2")Sheet1.Range("A1:F30").Copy Sheet1.Range("J1")Sheet1.Range("A1:F30").AutoFilterEnd Sub
7. 执行以上代码后,即可看到筛选的结果已复制过来了。
8. 但是当修改筛选条件为E班(只有一条数据)时,发现原来A班的筛选结果未清空,E班的结果只是覆盖了之前A班结果的第一行。
9. 解决上面的问题,需要在筛选之前添加清空结果区域的代码,再次执行后即可按预想效果筛选并复制结果。
Sub 自动筛选()Sheet1.Range("J1:O2000").ClearContentsSheet1.Range("A1:F30").AutoFilterfield:=2, Criteria1:=Sheet1.Range("H2")Sheet1.Range("A1:F30").Copy Sheet1.Range("J1")Sheet1.Range("A1:F30").AutoFilterEnd Sub
以上案例仅用于演示,实际应用中请根据自己需求进行调整。
喜欢的朋友请多多关注