Chuck写道,他需要根据单元格中使用的填充颜色对工作表中的记录进行排序。 Excel没有提供执行此操作的内在函数,但是可以创建用户定义的函数,该函数将帮助完成需要进行的任何排序。请考虑以下宏:

Function GetFillColor(rng As Range) As Long     GetFillColor = rng.Interior.ColorIndex End Function

假设填充色在A列的单元格中,您要做的就是确保有一个空的B列。然后将以下公式放在B2单元格中,并针对每个记录将其复制下来:

=GetFillColor(A2)

完成后,B列将包含在A列中使用的每种填充颜色的索引值。然后,您可以按B列进行排序,这将所有类似的填充颜色分组在一起。

例如,如果需要更详尽地说明,例如,需要按特定顺序排序(黄色第一,红色第二,绿色第三等),则您不能仅依靠填充颜色的索引值。在这种情况下,您必须依靠其他返回颜色的方法。

请考虑以下宏:

Function GetColor(rngIndex As Range, rngSource As Range) As Long     Dim lngColor As Long     Dim J As Integer

Application.Volatile     lngColor = rngSource.Interior.ColorIndex

GetColor = 99       'Set to default color     For J = 1 To rngIndex.Count         If rngIndex(J).Interior.ColorIndex = lngColor Then             GetColor = J         End If     Next J End Function

此宏的工作方式与最后一个不同。它需要两个范围才能正常工作。第一个范围基本上是一个颜色表,该表指示要对颜色进行排序的顺序。例如,单元格E1到E9可以包含您要用于排序的九种颜色,以您希望它们进行排序的顺序为准。然后,将以下公式放在单元格B2中,并针对每个记录将其向下复制:

=GetColor($E$1:$E$9,A2)

结果是B列将包含值1到9,代表颜色表中的颜色。如果单元格中的颜色在颜色表中没有对应的颜色,则该函数返回值99。对表中的记录进行排序时,最终将根据需要对它们进行排序。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(2009)适用于Microsoft Excel 97、2000、2002和2003。