[英]sort data left to right in excel vba
我想按列标题按字母顺序对完整的图纸数据进行排序。 下面的代码工作正常,但我每次都必须在变量(键范围和数据范围)中手动输入数据范围,因为每个文件中的列数/行数都不同。 我在下面的代码中尝试了不同的方法。 您能建议吗?有没有一种方法可以自动选择最后一列,如W下方,则最后一列是文件中的数据,并且代码应选择最后一列。 同样,列的最后一行也应该进入范围内(例如485是下面代码中文件的最后一行),这可能吗?
Sub sortfile2()
Dim keyrange As String
Dim DataRange As String
keyrange = "A1:W1"
DataRange = "A1:W485"
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(keyrange), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range(DataRange)
.Header = xlYes
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
End Sub
如果源rane是动态的,则可以使用
bottom= Range("A1").End(xlDown).Row
Set DataRange = Range("A1").CurrentRegion.Resize(bottom - 1).Offset(1)
请注意,CurrentRegion本身还不够。 您应该将其与“调整大小”和“偏移”结合使用。 如果仅尝试使用CurrentRegion并使用F8,则可以了解原因。
是的,可以确定最后一列和最后一行。
如果要确定第一( 1
)行中的最后一列,请使用以下代码:
Cells(1, Columns.Count).End(xlToLeft).Column
如果要获取第一列的最后一行,请使用以下命令:
Cells(Rows.Count, 1).End(xlUp).Row
这是第一列/行,因此您可以根据需要进行更改。
这是数据范围。
Sub test()
Dim rngDB As Range
Dim Ws As Worksheet
Dim r As Long, c As Long
Set Ws = ActiveSheet
With Ws
r = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
c = .Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Set rngDB = .Range("a1", .Cells(r, c))
rngDB.Select
End With
End Sub
要么
range("a1").CurrentRegion
是的,Michal的答案和其他来源帮助找到了所需的确切输出
'Find the last non-blank cell in row 1
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
d = Replace(Cells(1, lCol).Address(True, False), "$1", "")
'Find the last non-blank cell in column 1
lRow = Cells(rows.Count, 1).End(xlUp).row
keyrange = "A1:" & d & 1
DataRange = "A1:" & d & lRow
'below line is to print (for debugging) the calculated range
MsgBox (keyrange)
MsgBox (DataRange)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.