Excel的排序功能在实际操作中会经常被用到,包含了数值排序、文本排序、按单元格字体颜色排序、按单元格颜色排序以及自定义排序。
其中的按单元格颜色排序在使用中你会发现,它只能让你选择的颜色排在最上方,而并不能让所有颜色显示在最上方并排序。
那么如果我想让所有的颜色都显示在最上方,应该怎么操作呢?通过测试,我发现利用多次的选择颜色排序可以实现我的想法。
对于颜色较少的情况这种方式足够使用了,但是如果颜色较多,亦或者想要更加快捷的方式来实现又应该怎么办?一键操作当然是最省时省力的事情了。
本质上也是利用多次的选择颜色排序实现的,只是将繁琐的操作通过以下代码来实现了,这也是代码的优点。
Sub 颜色排序()
Dim d, arr1
Set d = CreateObject("scripting.dictionary")
'获取单元格里的所有颜色
For Each rg In Selection
col = rg.Interior.Color
If Not d.exists(col) Then '判断关键词是否存在于字典对象中
d(col) = col
End If
Next
arr1 = d.Keys '字典的key赋给一维数组
For i = 0 To UBound(arr1)
If arr1(i) <> 16777215 Then
ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Add(Selection, xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = arr1(i)
With ActiveWorkbook.ActiveSheet.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
End Sub
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved