QINMS.com >> 首页 >>  >> 正文

VBA的使用之自动排序

使用excel做表格的时候,有时候需要根据特定的行来排序,让结果更美观,更易查找到想要的数据,一目了然。

排序很简单,选择想要排序的行,然后点击自动排序,就可以了,但是如果是一个经常操作的表格,而且前面还带有序号的话,就有点麻烦了,序号就变得没有了顺序,如果还想用颜色来区分行的话,也是比较麻烦的事。

对于频繁重复的动作,还是交给VBA宏来处理吧。

下面是一段排序的VBA代码:

  1. Sub paixu() --程序开头
  2. a = 4 -- 从第四行开始排序,前面三行为标题行
  3. b = cells(.rows.count,1).end(xlup).row --第一列非空的最后一行
  4. Rows(a & ":" & b).Select --选择排序范围:从第四行到最后一行
  5. Sort.SortFields.Clear --清楚之前的格式
  6. Sort.SortFields.Add Key:=Range(Cells(a, 2), Cells(b, 2)),_
  7. SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal --以第二列为排序第一条件
  8. Sort.SortFields.Add Key:=Range(Cells(a, 3), Cells(b, 3)),_
  9. SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal --以第三列为排序的第二条件
  10. With Sort --开始排序
  11. .SetRange Range(Cells(a, 1), Cells(b, 16))
  12. .Header = xlGuess
  13. .MatchCase = False
  14. .Orientation = xlTopToBottom
  15. .SortMethod = xlPinYin
  16. .Apply
  17. End With
  18. --下面的代码为按照第二列中单元格的值填充不同的背景颜色
  19. --也可改成单数填充一种颜色,双数填充另一种颜色
  20. For i = 4 To b
  21. Select Case Cells(i, 2).Value
  22. Case 1
  23. Range(Cells(i, 2), Cells(i, 15)).Interior.ColorIndex = 10 --填充的颜色值,可任改
  24. Range(Cells(i, 2), Cells(i, 15)).Interior.TintAndShade = 0.3 --类似于颜色的浓淡或者说透明度
  25. Case 2
  26. Range(Cells(i, 2), Cells(i, 15)).Interior.ColorIndex = 43
  27. Range(Cells(i, 2), Cells(i, 15)).Interior.TintAndShade = 0.3
  28. End Select
  29. Cells(i, 1).Value = i - 3 --给第一列重新编上序列号
  30. Next
  31. End Sub

将代码放到VBA同表格名的界面下,下次直接在宏中点击运行paixu即可。


METi. 版权所有 |