簡體   English   中英

我怎么知道我的排序是否在excel vba中有效?

[英]how do I know if my sort worked in excel vba?

在對數據進行排序時,我記錄了以下宏:

Sub sort_sheet_test()
    ActiveWindow.ScrollRow = 1
    ActiveWindow.ScrollColumn = 1
    Range("A1:AB40905").Select
    ActiveWorkbook.Worksheets("flurry_an_output.csv").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("flurry_an_output.csv").Sort.SortFields.Add Key:= _
    Range("AB2:AB40905"), SortOn:=xlSortOnValues, Order:=xlAscending, _
    DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("flurry_an_output.csv").Sort
        .SetRange Range("A1:AB40905")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

然后,我編寫了自己的函數以在其他工作表中普遍使用.​​..等等:

Function sort_sheet_last_column(sheet_name As String)

    Dim rows1 As Long
    rows1 = Get_Rows_Generic(sheet_name, 1) '  get the number of rows in the sheet

    Dim columns1 As Integer
    columns1 = Range(find_last_column(sheet_name)).column ' get the number of columns in the sheet

    Dim sort_range As Range
    Dim key_range As Range
    With Worksheets(sheet_name)
        Set sort_range = .Range(.Cells(1, 1), .Cells(rows1, columns1)) ' set up range: the whole used portion of the sheet
        Set key_range = .Range(.Cells(1, columns1), .Cells(rows1, columns1))
    End With

    With Worksheets(sheet_name).Sort
        .SortFields.Clear
        .SortFields.Add Key:=key_range, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange sort_range
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply

    End With

End Function

似乎是根據正確的鍵對行進行了重新排序,但是我怎么知道我的版本是否為1)完全可以工作(很難知道是否正確地排序了40,000多行,以及2)我如何知道其余的行數據按正確順序排列?

我總是使用Sheet.Range.Sort而不是Sheet.Sort

 lLastRow = LastUsedRow(shMain)

 shMain.Range("A1:W" & lLastRow).SORT Key1:=.Range("B2"), _
                                      Order1:=xlAscending, _
                                      Header:=xlYes, _
                                      OrderCustom:=1, _
                                      MatchCase:=False, _
                                      Orientation:=xlTopToBottom, _
                                      DataOption1:=xlSortNormal

排序范圍從來沒有問題,您可以添加Key2,Order2和DataOption2以按多列進行排序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM