第1个回答 2009-08-30
楼主, EXCEL对单元格颜色的操作有两个方法,1. 用VBA程序来做 2. 用函数对单元格的色彩值提取,再对色彩值进行操作(如排序)。如果您对VBA不是很了解的话,我建议您用Excel的函数方法。
Execel对单元格取颜色的函数可用 宏表函数get.cell
用法:(假设您的公司名在A列,还假设您说的红色是说字体颜色而不是说单元格背景颜色)
1. 宏表函数因为是早期Excel函数,不能直接使用,要通过"名称"使用它
"插入"菜单-->名称-->定义-->上边输入定义名称名字color-->引用位置输入=GET.CELL(24,Sheet1!$A$1)+RAND()*0 -->然后,点右侧的"添加"按钮
2. B1输入公式=color, 此时B1的值就是A1单元格的前景(字体)颜色值。
解释:
a. GET.CELL(24,Sheet1!$A$1) 取sheet1中A1的前景(字体)颜色值
b. RAND()*0 随机取值函数RAND乘以0永远等于0, 这个公式的作用:GET.CELL作为宏表函数,同是它也是易失性函数,RAND()*0只是对易失性函数的一个处理,它的存在对整个公式的结果无影响。
c. GET.CELL的参数24是前景字体色,如果是取A1背景颜色请用63
=GET.CELL(63,Sheet1!$A$1)+RAND()*0
d. 当单元格颜色有所改变时,请按F9(整表重算),get.cell公式值才会重算。
e. 本例宏表的单元格引用用的是绝对引用形式"$A$1", 如果你想用相对引用"A1"样式实现对不同的单元格实现公式引用的话。请注意一点.
请注意: 在定义名称之前,先选中"即将要第一次"使用这个名称的单元格后,再定义名称(意思是说: 名称在哪个单元格用就选先哪个单元格,再定义名称,这样才会保证相对引用不会错位)
颜色的值都有了,再对颜色值这列进行由大到小排序,就是您想要的结果了(注:黑色的颜色值是0)
第2个回答 2009-08-28
假设公司名称在A列,公司名从A2开始。用一附助列如B列,在B1输入“代码”二字,选中B2,定义名称→在名称框输入 xxx →在引用位置框输入 =GET.CELL(24,A2) →确定。
在B2输入公式:
=IF(xxx=3,1,)
公式向下填充至公司名称的最后一行。
再选中B、A列,以B列按降序排序。
最后删除B列。
第3个回答 2009-08-28
如果你用的是office2007,非常容易达到红色置顶效果。
1.筛选
2.点一下公司名称旁边的下拉三角,选按颜色排序。点击红色。
ok了。
============================
可以使用辅助列。
你在公司名称前面插入一列。
然后把所有的红色的前面写1
然后,再对添加的这列排序。
红色的就会在黑色的上面了。
第4个回答 2009-08-28
1.在菜单上点选 工具/ 宏/ Visual Basic 编辑器,在打开的编辑器窗口菜单上点选 插入/ 模块。
2.把下列代码粘贴到编辑器窗口。
Function GroundColor(R1 As Range) As Integer
If R1.Interior.Color = vbRed Then
GroundColor= 1
Else
GroundColor= 0
End If
End Function
Function FontColor(R1 As Range) As Integer
If R1.Cells.Font.Color = vbRed Then
FontColor= 1
Else
FontColor= 0
End If
End Function
3.关闭编辑器窗口,保存一下excel文件。
4.在数据后新加一列“是否红色”,假设公司名称列为列A,新加列为列B,则B2=BackColor(A2) ,可求A2是否背景色为红色;或B2=GroundColor(A2) ,可求A2是否字体为红色。
5.将B2单元格向下复制粘贴至与最后一行相齐。
6.将所有数据按“是否红色”列倒排序即可。操作完毕可以将“是否红色”列删除。