VBA的使用之自动排序
使用excel做表格的时候,有时候需要根据特定的行来排序,让结果更美观,更易查找到想要的数据,一目了然。
排序很简单,选择想要排序的行,然后点击自动排序,就可以了,但是如果是一个经常操作的表格,而且前面还带有序号的话,就有点麻烦了,序号就变得没有了顺序,如果还想用颜色来区分行的话,也是比较麻烦的事。
对于频繁重复的动作,还是交给VBA宏来处理吧。
下面是一段排序的VBA代码:
- Sub paixu() --程序开头
- a = 4 -- 从第四行开始排序,前面三行为标题行
- b = cells(.rows.count,1).end(xlup).row --第一列非空的最后一行
- Rows(a & ":" & b).Select --选择排序范围:从第四行到最后一行
- Sort.SortFields.Clear --清楚之前的格式
- Sort.SortFields.Add Key:=Range(Cells(a, 2), Cells(b, 2)),_
- SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal --以第二列为排序第一条件
- Sort.SortFields.Add Key:=Range(Cells(a, 3), Cells(b, 3)),_
- SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal --以第三列为排序的第二条件
- With Sort --开始排序
- .SetRange Range(Cells(a, 1), Cells(b, 16))
- .Header = xlGuess
- .MatchCase = False
- .Orientation = xlTopToBottom
- .SortMethod = xlPinYin
- .Apply
- End With
- --下面的代码为按照第二列中单元格的值填充不同的背景颜色
- --也可改成单数填充一种颜色,双数填充另一种颜色
- For i = 4 To b
- Select Case Cells(i, 2).Value
- Case 1
- Range(Cells(i, 2), Cells(i, 15)).Interior.ColorIndex = 10 --填充的颜色值,可任改
- Range(Cells(i, 2), Cells(i, 15)).Interior.TintAndShade = 0.3 --类似于颜色的浓淡或者说透明度
- Case 2
- Range(Cells(i, 2), Cells(i, 15)).Interior.ColorIndex = 43
- Range(Cells(i, 2), Cells(i, 15)).Interior.TintAndShade = 0.3
- End Select
- Cells(i, 1).Value = i - 3 --给第一列重新编上序列号
- Next
- End Sub
将代码放到VBA同表格名的界面下,下次直接在宏中点击运行paixu即可。