我已经研究了几个网站两天了,并且已经提出了几个接近我需要但不完全正确的宏。如果我不在正确的地方,请有人指导我到我需要去的地方吗?
我希望那里的某个人能够调整我所拥有的东西,这样才能奏效。下面是我正在使用的Excel行的副本。
MT MD BB AA CC
MT MD AK
MT MD LX A2
MT MD LA SO VL AH PH
A7 LW A1
SC
MT MD GL A1
MT MD
A7 A1 A2
MT MD A1 AH
MT MD A4 AD A7 AK A1 AH PH A2 A7 AH AJ PH
。我需要使用自定义列表对每一行进行排序:
MT MD BU ED TI作为CI MP FF NF A1 A2 A7 LX GL CR BA WS
列表中没有但显示在电子表格上的任何内容都将落在列表的末尾。 下面是两个接近但不完全的宏。 (我对原件进行了修改)
Sub test()
ActiveWorkbook.Worksheets("Sheet1").Range("3:100").Sort _
Key1:=ActiveWorkbook.Worksheets("Sheet1").Range("3:100").Row(2), _
Header:=xlYes, _
Orientation:=xlSortRows, _
MatchCase:=False, _
SortMethod:=xlPinYin
End Sub
Sub Macro5()
Rows("3:30").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Rows("2:2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"MT,BU,MD,ED,TI,AS,CI,MP,FF,NF,A1,A2,A7,LX,CR,BA,GL,WS", DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Rows("3:30")
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
End Sub
有什么想法吗?
答案 0 :(得分:0)
您可能需要单独对行进行排序,请尝试:
Dim lRow As Long
Application.ScreenUpdating = False
For lRow = 3 To 30
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SortFields.Clear
.SortFields.Add Key:=.Parent.Rows(lRow & ":" & lRow), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"MT,BU,MD,ED,TI,AS,CI,MP,FF,NF,A1,A2,A7,LX,CR,BA,GL,WS", DataOption:=xlSortNormal
.SetRange .Parent.Rows(lRow & ":" & lRow)
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
Next lRow
Application.ScreenUpdating = True