VBA 排序之Sort说明

花了点时间整明白Sort这个玩意,留着备用;

Sub 排序之Sort()

Sheet3.Range("A1:CN6").Sort Key1:=Range("N1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=n + 1, MatchCase:=True

'↑↑↑↑↑↑↑↑....以上为实际操作时的代码写法,特别注意Sort key1中间的空格必须要有....↑↑↑↑↑↑↑↑

'=========================================================================================================================================================================================================================>

'↓↓↓↓↓↓↓↓....以下为便于说明,方便查看....↓↓↓↓↓↓↓↓

    语法:expression.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

    'expression 必须。一个表示 Range 对象的变量

    With Sheet3.Range("A1:CN6")

        .Sort Key1:=Sheet3.Range("N1") '..........第一排序关键字。

        .Sort Order1:=xlAscending '...............第一关键字排序方式xlAscending(或1)=升序,xlDescending(或2)=降序。
        
        .Sort Key2:=Range("F1") '.................第二关键字。

        .Sort Type:=xlChart '.....................指定要排序的元素。

        .Sort order2:=xlAscending '...............第二关键字排序方式xlAscending(或1)=升序,xlDescending(或2)=降序。

        .Sort key3:=Sheet3.Range("B1") '..........第三关键字。

        .Sort order3:=xlAscending '...............第三关键字排序方式xlAscending(或1)=升序,xlDescending(或2)=降序。

        .Sort Header:=xlGuess '...................指定第一行是否包含标题。xlGuess(或0)=工作表自己判断是否有标题,xlYes(或1)=强制第一行为列标题(不参与排序),xlNo(或2)=强制没有列标题(全部参与排序)

        .Sort OrderCustom:=n + 1 '................指定在自定义排序次序列表中的基于一的整数偏移(例:同一列中有ABCD,可以指定按DCBA或CDAB自定义排序,n变量可以是数组,也可以是单元格区域)
        
        .Sort MatchCase:=True '...................设置为True以执行区分大小写的排序, 设置为 False 以执行不区分大小写的排序; 否则为False 。不能用于数据透视表。

        .Sort Orientation:=xlSortColumns '........指定是应按行还是按列进行排序。 xlSortColumns(或1)按列排序。 xlSortRows(或2)=按行排序 。
        
        .Sort SortMethod:=xlPinYin '..............指定排序方法。xlPinYin(或1)=按字符的汉语拼音顺序排序,xlStroke()=按每个字符的笔划数排序。

        .Sort dataoption1:=xlSortNormal '.........指定如何对_Key1_中指定的范围内的文本进行排序;不适用于数据透视表排序。xlSortNormal(或0)=分别对数字和文本数据进行排序(默认值),xlSortTextAsNumbers(或1)=将文本作为数字型数据进行排序。

        .Sort dataoption2:=xlSortNormal '.........指定如何对_Key2_中指定的范围内的文本进行排序;不适用于数据透视表排序。xlSortNormal(或0)=分别对数字和文本数据进行排序(默认值),xlSortTextAsNumbers(或1)=将文本作为数字型数据进行排序。

        .Sort dataoption3:=xlSortNormal '.........指定如何对_Key3_中指定的范围内的文本进行排序;不适用于数据透视表排序。xlSortNormal(或0)=分别对数字和文本数据进行排序(默认值),xlSortTextAsNumbers(或1)=将文本作为数字型数据进行排序。

    End With

    '******************************************* 关于第四个参数 Type 对应值的说明 *******************************************
    
        'xlChart........................(或-4109) = 图表
        'xlDialogSheet..................(或-4116) = 对话框工作表
        'xlExcel4IntlMacroSheet.........(或4)     = Excel 版本 4 国际宏工作表
        'xlExcel4MacroSheet.............(或3)     = Excel 版本 4 宏工作表
        'xlWorksheet....................(或-4167) = 工作表Worksheet

End Sub
  • 13
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VBA中的Sort方法可以用于对数组进行排序。对于自定义排序,您需要使用Compare参数,并编写一个函数来执行自定义比较操作。 下面是一个示例代码,演示如何使用VBA进行自定义排序: ```vb Sub CustomSort() Dim arr(1 To 5) As String Dim i As Integer arr(1) = "apple" arr(2) = "orange" arr(3) = "banana" arr(4) = "grape" arr(5) = "peach" '调用Sort方法,并传递自定义比较函数 Call VBA.Sort(arr, AddressOf Compare) '输出排序结果 For i = 1 To 5 Debug.Print arr(i) Next i End Sub Function Compare(ByVal a As String, ByVal b As String) As Integer '自定义比较函数 '如果a小于b,则返回-1 '如果a等于b,则返回0 '如果a大于b,则返回1 Select Case a Case "banana" Select Case b Case "banana" Compare = 0 Case "orange", "apple" Compare = -1 Case Else Compare = 1 End Select Case "apple" Select Case b Case "apple" Compare = 0 Case Else Compare = -1 End Select Case "orange" Select Case b Case "orange" Compare = 0 Case Else Compare = 1 End Select Case "grape" Select Case b Case "grape" Compare = 0 Case "peach" Compare = -1 Case Else Compare = 1 End Select Case "peach" Select Case b Case "peach" Compare = 0 Case Else Compare = 1 End Select End Select End Function ``` 在上面的代码中,我们定义了一个自定义比较函数Compare,该函数接受两个字符串参数a和b,并返回一个整数值,用于指示a与b的大小关系。然后,我们定义了一个字符串数组arr,并使用Sort方法对其进行排序,同时传递了自定义比较函数Compare。最后,我们遍历排序后的数组,并输出结果。 请注意,上面的示例中的自定义比较函数Compare只是一个示例,您可以根据自己的需求编写不同的比较函数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值