Excel 如何在已排序列VBA中对数字进行排序
所以我有四列数据,但只有两列(C列和D列)需要排序。一列是工作中心名称列表(C列),另一列是操作编号(D列)。我想知道的是如何按字母顺序对工作中心名称进行排序,然后在每个工作中心名称中,按升序对操作编号进行排序 因此,数据最终会如下所示:(假设x是一个随机列值) 目前,这是我的代码。它对一列进行排序,但在对第二列进行排序时,会覆盖第一个排序并对另一列进行置乱Excel 如何在已排序列VBA中对数字进行排序,excel,vba,sorting,Excel,Vba,Sorting,所以我有四列数据,但只有两列(C列和D列)需要排序。一列是工作中心名称列表(C列),另一列是操作编号(D列)。我想知道的是如何按字母顺序对工作中心名称进行排序,然后在每个工作中心名称中,按升序对操作编号进行排序 因此,数据最终会如下所示:(假设x是一个随机列值) 目前,这是我的代码。它对一列进行排序,但在对第二列进行排序时,会覆盖第一个排序并对另一列进行置乱 ActiveWorkbook.Worksheets("Percent").Sort.SortFields.Clear Acti
ActiveWorkbook.Worksheets("Percent").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Percent").Sort.SortFields.Add Key:=Range( _
"D1:D" & DailyLastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Percent").Sort
.SetRange Range("A1:D" & DailyLastRow)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Worksheets("Percent").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Percent").Sort.SortFields.Add Key:=Range( _
"C1:C" & DailyLastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Percent").Sort
.SetRange Range("A1:D" & DailyLastRow)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
您可以使用range.sort 您可以选择定义多个列以使用
key1:=range.columns(3),key2:=range.columns(4)
这是前面的桌子
Col1 Col2 Col3 Col4
x x LDHF 30
x x SHFT 10
x x LDHF 20
x x SHFT 20
x x SHFT 30
x x LDHF 10
这是剧本
Sub RangeSort()
Dim rng As Range
Set rng = Range("a1:D7")
rng.Sort key1:="Col3", order1:=xlAscending, Key2:="Col4", Header:=xlYes
End Sub
这是输出:
Col1 Col2 Col3 Col4
x x LDHF 10
x x LDHF 20
x x LDHF 30
x x SHFT 10
x x SHFT 20
x x SHFT 30
我想这就是你想要的。使用下面的代码。这将完成你的工作。如果不起作用,请告诉我
Sub PSortData()
Dim rngData As Range
Set rngData = Worksheets("Percent").Range("A1:D" & DailyLastRow)
rngData.Sort Key1:=Range("C1"), Order1:=xlAscending, Key2:=Range("D1"), Order2:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:=xlSortNormal
Set rngData = Nothing
End Sub
谢谢你的回复,但是这段代码对数据的排序与我上面发布的代码几乎相同。它对一列或另一列进行排序,而不是在另一列中进行排序。@ksmit144那么您在寻找什么呢?你能再重复一遍你的问题吗?你能再解释一下吗?我只是试着用那个代码,出于某种原因,尽管工作中心的字母顺序是正确的,但数字仍然不符合顺序。我不确定代码有什么问题,但这就是我使用的:
Dim rng As Range Set rng=Range(“A1:D”&dailyllastrow)rng.Sort key1:=Range(“C1:C”&dailyllastrow),order1:=xlAscending,Key2:=Range(“D1:D”&dailyllastrow),Header:=xlYes
在对第4列排序之后,是否要对第3列进行排序?这意味着您将获得“101020030”和“LDHF SHDF LDHF SHDF LDHF SHDF”抱歉,我刚刚更正了它。我在sub中使用了正确的代码,只是在这里输入了错误的代码。然后尝试设置rng=Range(“A1:D”&dailyllastrow)rng.Sort key1:=rng.Columns(3),order1:=xlAscending,key2:=rng.Columns(4),Header:=xlYes
Sub PSortData()
Dim rngData As Range
Set rngData = Worksheets("Percent").Range("A1:D" & DailyLastRow)
rngData.Sort Key1:=Range("C1"), Order1:=xlAscending, Key2:=Range("D1"), Order2:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:=xlSortNormal
Set rngData = Nothing
End Sub