美文网首页数据分析
Pywin32操控Excel——2. 筛选与排序

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

作者: JunChen | 来源:发表于2022-07-30 15:35 被阅读0次

    筛选

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

    参数

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

    效果

    效果

    相关文章

      网友评论

        本文标题:Pywin32操控Excel——2. 筛选与排序

        本文链接:https://www.haomeiwen.com/subject/ewicwrtx.html