数据分析

Pywin32操控Excel——2. 筛选与排序

2022-07-30  本文已影响0人  JunChen

筛选

AutoFilter (Field, Criteria1, Operator, Criteria2, SubField, VisibleDropDown)

参数

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()

效果图
效果图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('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()

效果图
效果图2

排序

Sort (Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

参数

参数是有点多,但通常只对一个字段进行排序。对第二个字段进行排序,第一个字段不就又乱了。有点不明白为什么要进行多个字段排序。有知道可以在评论区指出。谢谢!

原数据

原数据

排序代码

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()

效果

效果
上一篇 下一篇

猜你喜欢

热点阅读