一.在excel2003中按单元格背景颜色求和按颜色求和,在网上一查还真找到了这一方法,经过测试(在Excel2003和2007中),非常好用,整理出来,与大家分享:Excel本身没有这个功能,可用以下办法实现:打开你的工作表:点工具--宏--VisualBasic编辑器,在左边最上一行点右键--插入--模块,然后在打开的编辑框中粘贴以下代码:FunctionCountColor(colAsRange,countrangeAsRange)AsIntegerDimicellAsRangeApplication.VolatileForEachicellIncountrangeIficell.Interior.ColorIndex=col.Interior.ColorIndexThenCountColor=CountColor+1EndIfNexticellEndFunctionFunctionSumColor(colAsRange,sumrangeAsRange)AsIntegerDimicellAsRangeApplication.VolatileForEachicellInsumrangeIficell.Interior.ColorIndex=col.Interior.ColorIndexThenSumColor=Application.Sum(icell)+SumColorEndIfNexticellEndFunction然后关闭,反回到工作表,点击--工具-选项--安全性--宏安全性--安全级选--低--确定保存关闭工作表,然后再打开,这时就可以用了用法:按颜色求和:sumcolor(颜色示列格,求和区域或列);按颜色计数:countcolor(颜色示列格,求和区域或列)例如:要求和从a1到a10这个区域内的红色格,=sumcolor($a$1,$a$1:$A$10)计数:countcolor($a$1,$a$1:$A$10)注意:$a$1必须是红色格,这是定义颜色的,你也可以设成其它格,但必须是你要求和的颜色ok!有问题可以留言。二.在excel2007中按单元格背景颜色求和在“开发工具”选项卡的“代码”组中,单击“宏安全性”。提示如果未显示“开发工具”选项卡,请单击“Office按钮”,单击“Excel选项”,然后在“常用”类别中的“使用Excel时采用的首选项”下单击“在功能区显示‘开发工具’选项卡”。在“宏设置”类别中的“宏设置”下,单击所需的选项。打开要进行分背景颜色计算的工作簿,点击开发工具---VISUALBASIC—插入—模块—复制以下内容FunctionSumColor(colAsRange,sumrangeAsRange)AsIntegerDimicellAsRangeApplication.VolatileForEachicellInsumrangeIficell.Interior.ColorIndex=col.Interior.ColorIndexThenSumColor=Application.Sum(icell)+SumColorEndIfNexticellEndFunction到打开的模块范围内,即会自动产生SUMCOLOR()函数;然后点击该VB的窗口保存图标---会显示“另存为”窗,在保存类型选项选择“excel启用宏的工作簿”,保存即可---在该工作簿中建立数据表格,在点击要放汇总的单元格—公式—f(x)函数—选择类别--全部—即会在下拉中看到sumcolor()函数---格式为sumcolor(操作颜色示例单元格例如A12,求和范围例B13:B78)---按出现的顺序操作即可。操作颜色示例单元格最好在图表旁边另建(颜色模板),防止因数据表中颜色调整而影响到计算结果;此处颜色不是字体颜色,而是背景颜色。建完后要进行保存,最好也保存为“excel启用宏的工作簿”。另外应将宏安全级别降低或改为提醒:开发工具—宏安全--选择禁用所有宏,并发出通知或者启用所有宏(不推荐)关于countcolor()和sumcolor()的变更求助按填充颜色或字体颜色求和及计数自定义函数语法:Countcolor(countrange,colorrange,fontorinterior)Sumcolor(countrange,colorrange,fontorinterior)countrange:要计算的单元格区域colorrange:要比较的单元格fontorinterior:为TRUE时,按内部填充颜色计算,为FALSE按字体颜色计算,默认为FALSE格式Sumcolor(countrange,colorrange,fontorinterior)《与上面的顺序不同》建好宏函数及表格后,在某单元格插入函数f(x),--全部---选中Sumcolor,--按出现的窗口操作—此例选项最上面为范围,中间为颜色示例,最下面为“填充色”及“字体色”的选择,填为true指按内部填充颜色计算,false为按字体颜色计算。格式为Sumcolor(countrange,colorrange,true)。别忘了保存注意事项!FunctionCountcolor(countrangeAsRange,colorrangeAsRange,OptionalfontorinteriorAsBoolean=False)DimiCellAsRangeDimTFAsBooleanApplication.VolatileForEachiCellIncountrangeIffontorinterior=TrueThenTF=iCell.Interior.colorindex=colorrange.Interior.colorindexElseTF=iCell.Font.colorindex=colorrange.Font.colorindexEndIfIfTFThenCountcolor=Countcolor+1EndIfNextiCellEndFunctionFunctionSumcolor(sumrangeAsRange,colorrangeAsRange,OptionalfontorinteriorAsBoolean=False)DimiCellAsRangeDimTFAsBooleanApplication.VolatileForEachiCellInsumrangeIffontorinterior=TrueThenTF=iCell.Interior.colorindex=colorrange.Interior.colorindexElseTF=iCell.Font.colorindex=colorrange.Font.colorindexEndIfIfTFThenSumcolor=Sumcolor+Val(iCell)EndIfNextiCellEndFunction注意:当完成所有工作并应用该功能时,会出现一个问题:直接修改字体颜色时,sumcolor单元格的数字会不变。解决办法:用格式刷来改变单元格的颜色,并以某固定格式单元格为范本单元格。