![](/img/trans.png)
[英]Sort multiple columns of Excel in VBA given the top-left and lowest-right cell
[英]How to sort columns left to right?
我正在尝试根据某一行中显示的值对列进行排序。
数据由两个表组成,用空行分隔。
A B C D E
1 12QA03 12QA01 12QA02
2 Step 1 32 23 82
3 Step 2 43 92 1
4 Step 3 12 12 84
5 Step 4 65 89 51
6
7 24QA93 24QA91 24QA95 24QA98
8 Step 1 94 77 83 28
9 Step 2 92 30 5 19
10 Step 3 19 82 16 49
11 Step 4 11 41 7 17
目的是要获得:
A B C D E
1 12QA01 12QA02 12QA03
2 Step 1 23 82 32
3 Step 2 92 1 43
4 Step 3 12 84 12
5 Step 4 89 51 65
6
7 24QA91 24QA93 24QA95 24QA98
8 Step 1 77 94 83 28
9 Step 2 30 92 5 19
10 Step 3 82 19 16 49
11 Step 4 41 11 7 17
我写了一个宏,该宏可以正确地用于顶层表,但是第二个错误:
Sub SortData()
'Sort top table
With Range("B1:D5")
.Rows.Sort Key1:=.Rows.Range("B1"), Order1:=xlAscending, _
Orientation:=xlLeftToRight
End With
'Sort top table
With Range("B7:E11")
.Rows.Sort Key1:=.Rows.Range("B7"), Order1:=xlAscending, _
Orientation:=xlLeftToRight
End With
End Sub
怎么了? 还是有更好的方法? 在此先感谢您的帮助!
也许更简单一些:
Sub SortLTable()
Range("B7:E11").Sort Key1:=Range("B7:E7"), Order1:=xlAscending, Orientation:=xlLeftToRight
End Sub
暂时在A1和A7中放置一些内容,例如“ A”,以便您具有完整的表(带有已填充的标题列)。 您可以在排序后删除这些值。
您对With
和Rows
使用使该问题变得混乱:
Sub SortData()
'Sort top table
Range("A1,A7").Value = "A"
Range("B1:D5").Sort Key1:=Range("B1"), Order1:=xlAscending, _
Orientation:=xlLeftToRight
'Sort top table
Range("B7:E11").Sort Key1:=Range("B7"), Order1:=xlAscending, _
Orientation:=xlLeftToRight
Range("A1,A7").Value = ""
End Sub
以下代码有效。
Sub SortLTable()
Range("B1:D5").Sort Key1:=Range("B1:D1"), Order1:=xlAscending, Orientation:=xlLeftToRight
Range("B7:E11").Sort Key1:=Range("B7:E7"), Order1:=xlAscending, Orientation:=xlLeftToRight
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.