我正在尝试对多列(准确地说是9列)中的数据进行排序。本质上,我需要按单个#(排序号)对它们进行排序,同时保持其余列中的其余信息与排序号对齐。我尝试将其录制为宏并提取代码,但当我尝试使用相对单元格选择重新创建该代码时,我失败了。我附上了我正在使用的excel文档的屏幕截图。
Range("B6").Select
Range(Cells(Selection.Column, 2), Cells((Selection.Column), 26)).Select
ActiveWorkbook.Worksheets("Liability.VarAnn & Other").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Liability.VarAnn & Other").Sort.SortFields.Add Key _
:=Range(Cells(Selection.Column, 2), Cells((Selection.Column), 26)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Liability.VarAnn & Other").Sort
.SetRange Range(Cells(Selection.Column, 2), Cells((Selection.Column), 26))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With结束子对象
如果有人能帮上忙,请提前感谢!
发布于 2019-06-21 04:54:51
Sort的工作方式是识别要排序的区域,然后根据特定列中的关键字进行排序:
.Range(.Cells(1,1),.Cells(lr,lc)).Sort key1:=Range(.Cells(1,"H"),.Cells(lr,"H")), order1:=xlAscending, Header:=xlNo因此,如果您需要限制这两个范围中的一个,您可以在不影响要排序的区域以外的数据的情况下对其进行排序(从上面的.Range(.Cells(1,1),.Cells(lr,lc))开始)。
如果我只想对某个范围的H列进行排序,而不是通过最后一列(lc)和最后一行(lr)进行A1,我可以这样做:
.Range(.Cells(1,"H"),.Cells(lr,"H")).Sort key1:=Range(.Cells(1,"H"),.Cells(lr,"H")), order1:=xlAscending, Header:=xlNohttps://stackoverflow.com/questions/56693614
复制相似问题