按颜色排序(Microsoft Excel)
Excel允许您按任意数量的属性对工作表中的数据进行排序。但是,不能从本质上进行排序的一件事是单元格的颜色-至少在没有更新到Excel 2007或更高版本的情况下是这样。对于某些应用程序,这可能是非常方便的功能。
下面的宏SortByColor将根据单元格的格式化颜色对表格进行排序。
Sub SortByColor() On Error GoTo SortByColor_Err Dim sRangeAddress As String Dim sStartCell As String Dim sEndCell As String Dim rngSort As Range Dim rng As Range Application.ScreenUpdating = False sStartCell = InputBox("Enter the cell address of the " & _ "top cell in the range to be sorted by color" & _ Chr(13) & "i.e. 'A1'", "Enter Cell Address") If sStartCell > "" Then sEndCell = Range(sStartCell).End(xlDown).Address Range(sStartCell).EntireColumn.Insert Set rngSort = Range(sStartCell, sEndCell) For Each rng In rngSort rng.Value = rng.Offset(0, 1).Interior.ColorIndex Next Range(sStartCell).Sort Key1:=Range(sStartCell), _ Order1:=xlAscending, Header:=xlNo, _ Orientation:=xlTopToBottom Range(sStartCell).EntireColumn.Delete End If SortByColor_Exit: Application.ScreenUpdating = True Set rngSort = Nothing Exit Sub SortByColor_Err: MsgBox Err.Number & ": " & Err.Description, _ vbOKOnly, "SortByColor" Resume SortByColor_Exit End Sub
宏的工作原理是首先询问您要排序的范围的起始单元格。这应该是该范围中最顶层的单元格。然后宏将插入一列(只是临时的),可以在其中存储颜色值。然后,它将逐步遍历您指定的起始单元格定义的范围内的每个单元格。
SortByColor假定您的数据表没有标题行。如果是这样,则应更改实际的排序命令。只需将Header:= xlNo更改为Header:= xlYes。
您应注意,SortByColor宏只会根据应用于单元格的显式颜色对单元格进行排序,如果单元格的颜色是条件格式的结果,则不会进行排序。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(3122)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: