Loading

【Excel】Excel根据单元格背景色求和

例:用公式计算单元格背景色为浅蓝色的数字之和 
Excel中根据单元格背景色求和 - witty - 白狼啸月
 

步骤一:

Office 2003

Insert->Name->DefineNames in workbook输入getColorgetBGColor等标识词汇,Refers to输入公式=GET.CELL(63,$A1),这里数字63代表单元格的背景色,如果要得到文字的颜色,则把数字改成24(可参考附录中从互联网搜到的类型号信息)。这个公式用于会返回一个单元格背景色的索引数字。由于GET.CELL是excel里的隐藏函数,不能直接使用,所以要先在这里定义一下。

Excel中根据单元格背景色求和 - witty - 白狼啸月

 

 
Office 2010

Formulas->Define NameName输入getColorgetBGColor等标识词汇,Refers to输入公式=GET.CELL(63,$A1),这里数字63代表单元格的背景色,如果要得到文字的颜色,则把数字改成24。

Excel中根据单元格背景色求和 - witty - 白狼啸月

 

步骤二:

如果想知道某个单元格背景色的值,就在旁边的单元格里输入公式=getColor,如下图: 

Excel中根据单元格背景色求和 - witty - 白狼啸月

回车之后,我们会看到这个背景色对应的一个索引数字,如下图:

Excel中根据单元格背景色求和 - witty - 白狼啸月

好了,现在,我们知道了这个浅蓝色的索引值是33.

 

步骤三:

C列输入公式=IF(getColor=33,A1,0)

Excel中根据单元格背景色求和 - witty - 白狼啸月 

然后对C列求和,大家都会了=sum(C1:C12),得出结果154

 

Office 2010中运行的效果图如下:

 Excel中根据单元格背景色求和 - witty - 白狼啸月

 

这个还不算什么,再来个更猛的(函数作者未知):

在Excel里,按Alt+F11,调出VB编辑器,点菜单Insert->Module,粘贴如下的代码,自定义一个叫SumByColor的函数:

Function SumByColor(Ref_color As Range, Sum_range As Range)
Application.Volatile
Dim iCol As Integer
Dim rCell As Range
iCol = Ref_color.Interior.ColorIndex
For Each rCell In Sum_range
If iCol = rCell.Interior.ColorIndex Then
SumByColor = SumByColor + rCell.Value
End If
Next rCell
End Function

Excel中根据单元格背景色求和 - witty - 白狼啸月
Excel中根据单元格背景色求和 - witty - 白狼啸月

 

然后就可以使用这个函数了,如果要计算背景色为黄色单元格的数据,按照公式定义SumByColor(Ref_color As Range, Sum_range As Range),输入公式=SumByColor(A4,A1:B12)即可。

Excel还是很博大精深的。应该常常怀着敬畏的心去重新看待自己认为已经很“熟悉”的东西,更不能对自己不了解的事情妄加评论。

 

 

附录:

=GET.CELL(类型号,参考单元格)    [ 例:=GET.CELL(63,$A1) ]

以下是类型号及代表的意思
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        显示活页簿名称

posted @ 2014-06-05 23:11  uzipi  阅读(3010)  评论(0编辑  收藏  举报