源地址:http://www.excel123.cn/Article/excelhanshu/200910/481.html
有时需要按单元格颜色或字体颜色进行排序,但Excel 2003没有提供直接的方法。我们可以利用自定义函数或宏表函数GET.CELL,在辅助列中获取单元格颜色或字体颜色索引值,然后进行排序。具体方法如下:
方法一:用宏表函数GET.CELL
以下表为例,假设人物名单在B2:B19区域中。
序号 | 人物名单 |
1 | 一灯大师 |
2 | 柯镇恶 |
3 | 孙不二 |
4 | 洪七公 |
5 | 朱聪 |
6 | 马钰 |
7 | 黄药师 |
8 | 寒宝驹 |
9 | 丘处机 |
10 | 欧阳锋 |
11 | 全金发 |
12 | 谭处端 |
13 | 张阿生 |
14 | 南希仁 |
15 | 刘处玄 |
16 | 王处一 |
17 | 韩小萤 |
18 | 郝大通 |
1.选择C2单元格(很重要,不能随便选择别的单元格),单击菜单“插入→名称→定义”,弹出“定义名称”对话框。在“在当前工作簿中的名称”下的文本框中输入名称“字体颜色”,在“引用位置”下输入公式:
=GET.CELL(24,B2)
单击“确定”按钮。
说明:由于要获取字体颜色,所以公式中GET.CELL函数的第一个参数为“24”,如果要获取单元格颜色,则将该参数改为“38”,公式改为:
=GET.CELL(38,B2)
所定义的名称也可以作相应的更改,如改为“单元格颜色”。
2.在C2单元格中输入公式:
=字体颜色
回车后C2单元格中将显示B2单元格中字体的颜色索引值。将C2单元格中的公式用填充柄填充到C3:C19区域中,然后选择该区域中的某个单元格,单击工具栏中的A→Z排序按钮,即可得到按字体颜色排序后的结果。
方法二:用自定义函数
以下表为例,假设人物名单在B2:B19区域中。
序号 | 人物名单 |
1 | 一灯大师 |
2 | 柯镇恶 |
3 | 孙不二 |
4 | 洪七公 |
5 | 朱聪 |
6 | 马钰 |
7 | 黄药师 |
8 | 寒宝驹 |
9 | 丘处机 |
10 | 欧阳锋 |
11 | 全金发 |
12 | 谭处端 |
13 | 张阿生 |
14 | 南希仁 |
15 | 刘处玄 |
16 | 王处一 |
17 | 韩小萤 |
18 | 郝大通 |
1.按Alt+F11,打开VBA编辑器。单击菜单“插入→模块”,Excel插入名称为“模块1”的模块。在右侧的代码窗口中输入下面的VBA代码:
Function GetCellColor(TheCell As Range)
GetCellColor = TheCell.Interior.ColorIndex
End Function
Function GetFontColor(TheCell As Range)
GetFontColor = TheCell.Font.ColorIndex
End Function
2.按Alt+F11返回Excel界面。在C2单元格中输入公式:
=getcellcolor(B2)
如果需要按单元格字体颜色排序,则输入下面的公式:
=getfontcolor(B2)
回车后C2单元格中将显示B2单元格中填充色的颜色索引值。将C2单元格中的公式用填充柄填充到C3:C19区域中,然后选择该区域中的某个单元格,单击工具栏中的A→Z排序按钮,即可得到按单元格颜色排序后的结果。