找回密码
 加入
搜索
查看: 3111|回复: 1

[效率算法] Excel宏排序代码转换为Au3--Excel没有反映啊!

[复制链接]
发表于 2013-5-25 11:13:08 | 显示全部楼层 |阅读模式
本帖最后由 xlj310 于 2013-5-25 11:16 编辑

表格以包含标题按B列进行升序排序的操作的宏代码如下:
Sub 宏1()
    Range("B1").Select
    ActiveWorkbook.Worksheets("分析表").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("分析表").Sort.SortFields.Add Key:=Range("B2:B4"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("分析表").Sort
        .SetRange Range("A1:D4")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
转换成Au3的代码是:

$oExcel.ActiveSheet.Range("B1").Select
        $oExcel.ActiveSheet.Sort.SortFields.Clear
        
        With $oExcel.ActiveSheet.Sort.SortFields.Add
                .Key=$oExcel.ActiveSheet.Range("B2:B4")
                .SortOn=0
                .Order=1
                .DataOption=0
        EndWith

        With $oExcel.ActiveSheet.sort
                .SetRange($oExcel.ActiveSheet.Range("A1:D4"))
                .Header = 1
                .MatchCase = False
                .Orientation = 1
                .SortMethod = 1
                .Apply
        EndWith

但如此转换之后,Excel只有第一句代码的操作是起作用的,其他代码都没有反应。 请问:在Excel中的宏Sort方法该怎么转换成Au3代码呢?在论坛里搜索了半天,没有找到类似的sort帖子!

当然,折中办法是把Excel表格读取到数组里,排序后再写回Excel中,但我希望直接操作Sort方法来完成,这样的效果要好一些!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2013-5-25 13:01:31 | 显示全部楼层
$oExcel.Range("$A$1:$H$"&$lastRow).Sort ($oExcel.Range("B2:B$"&$lastRow), 1, $oExcel.Range("a2:a$"&$lastRow), Default, 2, $oExcel.Range("c2:c$"&$lastRow), 2, 1, True, 1, 1, Default, 0)
用这个可以实现
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-3 14:22 , Processed in 0.083860 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表