所以我有6列(A:F列)。列A由日期组成,而在中间,BE包含基于日期的数据。F列包含它所在的类别(L,RI或R)。我已经对所有L,RI和R进行了排序,因此我只想在自己的类别内进行排序。
我的问题是日期分散在每个类别中,因此我需要按照最新的日期对日期进行排序。举例来说,L从F2:F18下降。因此,我需要对日期从A1:F18进行排序,仅将其排序,否则它将与类别的RI,R中的其他数据混合。而RI从F19:F24开始,因此我需要对A19的数据进行排序:F24
我需要一个VBA代码,以按其自身类别中的最新日期对日期进行排序。数据会发生变化,因此有时可能会有更多或更少的类别。
我尝试录制宏来获得先机,但实际上我不知道要更改什么,因为我是VBA的新手。如果我不必手动选择它,那肯定会使它变得更容易。抱歉,如果我没有足够的描述性,我觉得我在解释事情上很差劲,但是我尽了最大的努力。这是下面的代码:
Range("A1:F23").Select
ActiveWorkbook.Worksheets("Sheet4").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet4").Sort.SortFields.Add Key:=Range("A2:A23") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet4").Sort
.SetRange Range("A1:F23")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A24:F33").Select
ActiveWorkbook.Worksheets("Sheet4").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet4").Sort.SortFields.Add Key:=Range("A25:A33") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet4").Sort
.SetRange Range("A24:F33")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
结束子
考虑更改操作顺序。我建议您首先按日期对所有数据进行排序(A列),然后按其他条件进行排序(F列)。这样做应按日期在每个L,RI,R中对数据进行排序。
使用“数据”功能区下的过滤器工具时,不需要VBA代码即可完成我所描述的内容。
如果您真的想自动执行此操作:
Rows("1:1").Select 'Column Headers Row
Selection.AutoFilter
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add Key:=Range _
("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add Key:=Range _
("F1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
结束子
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句