簡體   English   中英

VBA 按最后一列(特定行)對動態數據范圍進行排序

[英]VBA to sort Dynamic data range by Last Column (specific rows)

如果有人可以建議我如何按特定行(特別是第 5 行)的最后一列對動態數據進行排序(每個月填寫的最后一列可能會有所不同),不勝感激。

我讀到 VBA 對最后一列進行排序可以使用:

Sub SortLastColumn()
    With ActiveSheet.UsedRange
        Columns(.Columns(.Columns.Count).Column).Sort key1:=Columns(.Columns(.Columns.Count).Column)
    End With
End Sub

但這會返回我從第 1 行開始的所有數據。我不確定如何解決。

期待一個有利的解決方案。 謝謝!

SortCurrentRegion vs UsedRange

微軟

一個想法

  • 盡管CurrentRegion版本的代碼稍微復雜一些並強制您指定數據的第一個單元格的地址,但我更喜歡它,因為它允許您在工作表中包含其他數據,而不僅僅是“表”。

編碼

Option Explicit

Sub sortByLastColumnCR()
    
    Const FirstCellAddress As String = "A1"
    Const FirstSortRow As Long = 5
    
    ' Define Complete Range.
    Dim rng As Range
    Set rng = ActiveSheet.Range(FirstCellAddress).CurrentRegion
    ' Get rid of possible data to the left and above of first cell
    ' if First Cell Address is differenct than "A1".
    Set rng = ActiveSheet.Range(FirstCellAddress, rng.Cells(rng.Rows.Count, _
                                                            rng.Columns.Count))
    
    ' Define Sort Range.
    Set rng = rng.Resize(rng.Rows.Count - FirstSortRow + 1) _
                 .Offset(FirstSortRow - 1)
    
    ' Sort.
    rng.Sort Key1:=rng.Cells(1, rng.Columns.Count), _
             Order1:=xlAscending

End Sub

Sub sortByLastColumnUR()
    
    Const FirstSortRow As Long = 5
    
    ' Define Complete Range.
    Dim rng As Range
    Set rng = ActiveSheet.UsedRange
    
    ' Define Sort Range.
    Set rng = rng.Resize(rng.Rows.Count - FirstSortRow + 1) _
                 .Offset(FirstSortRow - 1)
    
    ' Sort.
    rng.Sort Key1:=rng.Cells(1, rng.Columns.Count), _
             Order1:=xlAscending

End Sub

您需要從排序范圍中排除前 4 行。

因此,遍歷它,首先定義要排序的范圍。

Sub SortLastColumn()

    Dim sortRange As Range

    Set sortRange = Range( "A5", Cells( ActiveSheet.UsedRange.Rows.Count, _
                                        ActiveSheet.UsedRange.Columns.Count ) )
    ' Now do the sorting

    sortRange.Sort Key1:= Columns(ActiveSheet.UsedRange.Columns.Count)

End Sub

暫無
暫無

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

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