![](/img/trans.png)
[英]VBA Excel ComboBox value to Range ("specific cell" to last column with data)
[英]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 行開始的所有數據。我不確定如何解決。
期待一個有利的解決方案。 謝謝!
Sort
: CurrentRegion
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.