对单元格范围进行排序,win32com.client

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对单元格范围进行排序,win32com.client相关的知识,希望对你有一定的参考价值。

我试图使用win32com在python中对一系列单元格进行排序:

enter image description here

我一直在使用的代码是:

sheet.Range("A1:B8").Sort(Key1=sheet.Range("B1"), Orientation=constants.xlAscending)

这是有效的。它按第二列对单元格范围进行排序:

enter image description here

当我想要时,是按Descending而不是Ascending排序:

sheet.Range("B8:A1").Sort(Key1=sheet.Range("B1"), Orientation=constants.xlDescending)

但由于一些奇怪的原因,它会切换每列的数据,而不会对最初在第二列中的值进行排序。

enter image description here

我玩了很多不同的参数类型sot排序方法here但似乎没有任何工作。有没有人有这种方法的经验,可以建议我如何让第二列排序降序?

答案

你的方向论证应该是:xlSortColumns = 1xlSortRows = 2。请参阅下面的Python脚本调整。正如Range.Sort Method所示,Order1,Order2和Order3采用xlAscending = 1xlDescending = 2值。

import win32com.client

wbk = 'C:PathToWorkbook.xlsx'

xlApp = win32com.client.Dispatch("Excel.Application")
xlApp.Workbooks.Open(wbk)

xlAscending = 1
xlSortColumns = 1    
xlApp.Sheets(1).Columns("A:B").Sort(Key1=xlApp.Sheets(1).Range("B1"),
                                    Order1=xlAscending, Orientation=xlSortColumns)

xlApp.Quit
xlApp = None                                 

以上是关于对单元格范围进行排序,win32com.client的主要内容,如果未能解决你的问题,请参考以下文章

将图表从单元格范围更改为命名范围

在快照中捕获整个 tableview 单元格范围以进行打印和共享

如何从多个单元格范围中找到最小值(不包括零)

使用单元格值作为单元格范围进行计算

VBA excel Target.Address =单元格范围

excel calc定义单元格范围