在使用Excel时,我们经常用设定单元格的颜色来区分一些内容,或者用颜色来标记一些相关的数据,而这时如果要将这些按填充颜色筛选出来,用平常的筛选又怎么做呢?
这个问题可以插入一个辅助列来解决,而且还要用到EXCEL4.0的一个宏表函数:GET.CELL,现在的版本已经不能直接使用这个函数了,只能通过定义名称的办法间接使用。如果以填充颜色进行筛选,就要先通过GET.CELL宏表函数求出颜色值,然后再以这个值来进行筛选。具体步骤:
假设需要筛选的数据在表1的A列
1、活动单元格置于B1,在插入-名称-定义里定义一个名称,X=GET.CELL(38,SHEET1!A1)。
2、在B1中输入=X。
但一些时候,我们不希望插入一个辅助列,这时就只能用VBA来解决这个问题了。下面这段代码可以实现,除首行外,将当前单元格所在列数据与当前单元格不同颜色的行隐藏起来!
数据首行为标题列,如有其它情况或想法,请自行修改代码。
Sub FilterColor()
Dim UseRow, AC
UseRow = Cells.SpecialCells(xlCellTypeLastCell).Row
If ActiveCell.Row > UseRow Then
MsgBox "请在要筛选的区域选择颜色条件格!", vbExclamation, "错误"
Else
AC = ActiveCell.Column
Cells.EntireRow.Hidden = False
For i = 2 To UseRow
If Cells(i, AC).Interior.ColorIndex <> ActiveCell.Interior.ColorIndex Then
Cells(i, AC).EntireRow.Hidden = True
End If
Next
End If
End Sub
使用方法:先把条件颜色的单元格设定为当前单元格,再运行此宏即可。
附上Get.Cell的各参数代表的意义:
| 1 |
参照储存格的绝对地址 |
| 2 |
参照储存格的列号 |
| 3 |
参照储存格的栏号 |
| 4 |
类似 TYPE 函数 |
| 5 |
参照地址的内容 |
| 6 |
文字显示参照地址的公式 |
| 7 |
参照地址的格式,文字显示 |
| 8 |
文字显示参照地址的格式 |
| 9 |
传回储存格外框左方样式,数字显示 |
| 10 |
传回储存格外框右方样式,数字显示 |
| 11 |
传回储存格外框方上样式,数字显示 |
| 12 |
传回储存格外框方下样式,数字显示 |
| 13 |
传回内部图样,数字显示 |
| 14 |
如果储存格被设定 locked传回 True |
| 15 |
如果公式处于隐藏状态传回 True |
| 16 |
传回储存格宽度 |
| 17 |
以点为单位传回储存格高度 |
| 18 |
字型名称 |
| 19 |
以点为单位传回字号 |
| 20 |
如果储存格所有或第一个字符为加粗传回 True |
| 21 |
如果储存格所有或第一个字符为斜体传回 True |
| 22 |
如果储存格所有或第一个字符为单底线传回True |
| 23 |
如果储存格所有或第一个字符字型中间加了一条水平线传回 True |
| 24 |
传回储存格第一个字符色彩数字, 1 至 56。如果设定为自动,传回 0 |
| 25 |
MS Excel不支持大纲格式 |
| 26 |
MS Excel不支持阴影格式 |
| 27 |
数字显示手动插入的分页线设定 |
| 28 |
大纲的列层次 |
| 29 |
大纲的栏层次 |
| 30 |
如果范围为大纲的摘要列则为 True |
| 31 |
如果范围为大纲的摘要栏则为 True |
| 32 |
显示活页簿和工作表名称 |
| 33 |
如果储存格格式为多行文字则为 True |
| 34 |
传回储存格外框左方色彩,数字显示。如果设定为自动,传回 0 |
| 35 |
传回储存格外框右方色彩,数字显示。如果设定为自动,传回 0 |
| 36 |
传回储存格外框上方色彩,数字显示。如果设定为自动,传回 0 |
| 37 |
传回储存格外框下方色彩,数字显示。如果设定为自动,传回 0 |
| 38 |
传回储存格前景阴影色彩,数字显示。如果设定为自动,传回 0 |
| 39 |
传回储存格背影阴影色彩,数字显示。如果设定为自动,传回 0 |
| 40 |
文字显示储存格样式 |
| 41 |
传回参照地址的原始公式 |
| 42 |
以点为单位传回使用中窗口左方至储存格左方水平距离 |
| 43 |
以点为单位传回使用中窗口上方至储存格上方垂直距离 |
| 44 |
以点为单位传回使用中窗口左方至储存格右方水平距离 |
| 45 |
以点为单位传回使用中窗口上方至储存格下方垂直距离 |
| 46 |
如果储存格有插入批注传回 True |
| 47 |
如果储存格有插入声音提示传回 True |
| 48 |
如果储存格有插入公式传回 True |
| 49 |
如果储存格是数组公式的范围传回 True |
| 50 |
传回储存格垂直对齐,数字显示 |
| 51 |
传回储存格垂直方向,数字显示 |
| 52 |
传回储存格前缀字符 |
| 53 |
文字显示传回储存格显示内容 |
| 54 |
传回储存格数据透视表名称 |
| 55 |
传回储存格在数据透视表的位置 |
| 56 |
枢纽分析 |
| 57 |
如果储存格所有或第一个字符为上标传回True |
| 58 |
文字显示传回储存格所有或第一个字符字型样式 |
| 59 |
传回储存格底线样式,数字显示 |
| 60 |
如果储存格所有或第一个字符为下标传回True |
| 61 |
枢纽分析 |
| 62 |
显示活页簿和工作表名称 |
| 63 |
传回储存格的填满色彩 |
| 64 |
传回图样前景色彩 |
| 65 |
枢纽分析 |
| 66 |
显示活页簿名称 |