编写自动筛选程序可以使用Excel的VBA(Visual Basic for Applications)来实现。以下是一个简单的自动筛选程序的示例,包括基础筛选、单条件筛选和多条件筛选的代码:
基础筛选示例
```vba
Sub 基础筛选示例()
'清除当前的筛选
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
'对A1:D100区域进行筛选
Range("A1:D100").AutoFilter
End Sub
```
单条件筛选示例
```vba
Sub 单条件筛选()
With ActiveSheet
'确保取消已有的筛选
If .FilterMode Then
.ShowAllData
End If
'假设销售额在D列,对A1:D100区域进行筛选
.Range("A1:D100").AutoFilter Field:=4, Criteria1:=">5000"
End With
End Sub
```
多条件筛选示例
```vba
Sub 多条件筛选()
Dim ws As Worksheet
Set ws = ActiveSheet
With ws
'清除筛选
If .FilterMode Then
.ShowAllData
End If
'销售额大于1万且是北京地区
.Range("A1:D100").AutoFilter Field:=2, Criteria1:=">10000"
.Range("A1:D100").AutoFilter Field:=3, Criteria1:="北京"
'把筛选后的数据复制到新表格
.SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets.Add.Range("A1")
End With
End Sub
```
使用FILTER函数的示例
```vba
Sub 使用FILTER函数筛选()
Dim ws As Worksheet
Set ws = ActiveSheet
'创建一个新表格
Dim newTable As Range
Set newTable = ws.Range("A1").CurrentRegion
'输入筛选条件
newTable.AutoFilter Field:=2, Criteria1:=">10000"
newTable.AutoFilter Field:=3, Criteria1:="北京"
'复制筛选后的数据到新表格
newTable.SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets.Add.Range("A1")
End Sub
```
清除筛选示例
```vba
Sub 清除筛选()
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
End Sub
```
使用Excel函数进行自动筛选的示例
```vba
Sub 使用Excel函数进行自动筛选()
Dim ws As Worksheet
Set ws = ActiveSheet
'输入一些数据
ws.Range("A2:B11") = Array("张三", 20, "李四", 22, "王五", 25, "赵六", 26, "孙七", 29, "周八", 30, "吴九", 35, "郑十", 40)
'输入筛选条件
ws.Range("D2") = ">30"
'使用FILTER函数进行筛选
ws.Range("E2").Formula = "=FILTER(A2:B11, B2:B11>=30)"
'按下Enter键
ws.Range("E2").Calculate
End Sub
```
这些示例展示了如何在Excel中使用VBA编写自动筛选程序。你可以根据自己的需求修改这些代码,例如更改筛选条件、数据范围等。