筛选
AutoFilter (Field, Criteria1, Operator, Criteria2, SubField, VisibleDropDown)
参数
- Field:要筛选的列,int, 从1开始
- Criteria1:筛选的条件1
- Operator:操作符
- Criteria2:筛选的条件2
- 其他省略,不影响使用。
Operator
这是VBA里面的参数,最好填数字,肯定不会错。
Name | Value | Description |
---|---|---|
xlAnd | 1 | Criteria1 And Criteria2 |
xlBottom10Items | 4 | 筛选最小的10项 (在Criteria1填数字,如:Criteria1='10'代表筛选最小的10项) |
xlBottom10Percent | 6 | 从小到大,按百分比取数(Criteria1在1-100中取数,当数据在1为10,Criteria1='10' ,代表数据从1-10排列,筛选前面10%,就会得到1.) |
xlFilterCellColor | 8 | Color of the cell |
xlFilterDynamic | 11 | Dynamic filter |
xlFilterFontColor | 9 | Color of the font |
xlFilterIcon | 10 | Filter icon |
xlFilterValues | 7 | Filter values,用于筛选同时筛选多个值 |
xlOr | 2 | Criteria1 Or Criteria2 |
xlTop10Items | 3 | 筛选最大的10项 (Criteria1='N',指定筛选最大的N项) |
xlTop10Percent | 5 | 从大到小,按百分比取数 (Criteria1在1-100中取数,当数据为1到10,Criteria1='10' ,代表数据从10-1排列,筛选前面10%,就会得到10) |
实例1 筛选最小的两项
原数据

筛选代码
import win32com.client
excelApp = win32com.client.Dispatch('Excel.Application')
excelApp.Visible = False
excelApp.DisplayAlerts = False
wb = excelApp.Workbooks.Open(r'C:\Users\12717\Desktop\test.xlsx')
ws = wb.Activesheet
ws.Range('A1:C7').AutoFilter(Field=3,Criteria1='2',Operator=4) # 筛选C列最小的2项
wb.Save()
excelApp.Quit()
效果图

实列2 筛选多个值,多列筛选
原数据同上面的一样
筛选代码
import win32com.client
excelApp = win32com.client.Dispatch('Excel.Application')
excelApp.Visible = False
excelApp.DisplayAlerts = False
wb = excelApp.Workbooks.Open(r'C:\Users\12717\Desktop\test.xlsx')
ws = wb.Activesheet
ws.Range('A1:C7').AutoFilter(Field=1,Criteria1=['A','C','E'],Operator=7) # 先同时筛选A,C,E
ws.Range('A1:C7').AutoFilter(Field=2,Criteria1='g') # 然后B列再筛选g
wb.Save()
excelApp.Quit()
效果图

排序
Sort (Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)
参数
- Key1:第一个要排序的字段
- Order1:顺序
- 1:升序
- 2:降序
- Key2:第二个排序的字段
- Order2:顺序
- Key3:第三个要排序的字段
- Order3:顺序
- MatchCase 是否区分大小写
- SortMethod 排序方式
- 1:PinYin
- 2:Stroke
- Orientation 排序方式
- 1:按列排序
- 2:按行排序
- 其他省略
参数是有点多,但通常只对一个字段进行排序。对第二个字段进行排序,第一个字段不就又乱了。有点不明白为什么要进行多个字段排序。有知道可以在评论区指出。谢谢!
原数据

排序代码
import win32com.client
excelApp = win32com.client.Dispatch('Excel.Application')
excelApp.Visible = False
excelApp.DisplayAlerts = False
wb = excelApp.Workbooks.Open(r'C:\Users\12717\Desktop\test.xlsx')
ws = wb.Activesheet
ws.Range('A2:D7').Sort(Key1=ws.Range('B2'), Order1=2,Orientation=1)
wb.Save()
excelApp.Quit()
效果

网友评论