首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对多列中的数据进行排序

对多列中的数据进行排序
EN

Stack Overflow用户
提问于 2019-06-21 04:43:46
回答 1查看 59关注 0票数 0

我正在尝试对多列(准确地说是9列)中的数据进行排序。本质上,我需要按单个#(排序号)对它们进行排序,同时保持其余列中的其余信息与排序号对齐。我尝试将其录制为宏并提取代码,但当我尝试使用相对单元格选择重新创建该代码时,我失败了。我附上了我正在使用的excel文档的屏幕截图。

Screenshot

Range("B6").Select

代码语言:javascript
复制
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

结束子对象

如果有人能帮上忙,请提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-21 04:54:51

Sort的工作方式是识别要排序的区域,然后根据特定列中的关键字进行排序:

代码语言:javascript
复制
.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,我可以这样做:

代码语言:javascript
复制
.Range(.Cells(1,"H"),.Cells(lr,"H")).Sort key1:=Range(.Cells(1,"H"),.Cells(lr,"H")), order1:=xlAscending, Header:=xlNo

另外,请参阅How to avoid using Select in Excel VBA

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56693614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档