Office中国论坛/Access中国论坛
标题:
“割须弃袍”——浅谈自定义函数统计格式单元格
[打印本页]
作者:
roych
时间:
2012-7-26 21:21
标题:
“割须弃袍”——浅谈自定义函数统计格式单元格
记得多年前读《三国演义》,读到第五十八回《马孟起兴兵雪恨 曹阿瞒割须弃袍》:
……马超、庞德、马岱引百余骑,直入中军来捉曹操。操在乱军中,只听得西凉军大叫:“穿红袍的是曹操!”操就马上急脱下红袍。又听得大叫:“长髯者是曹操!”操惊慌,掣所佩刀断其髯。军中有人将曹操割髯之事,告知马超,超遂令人叫拿:“短髯者是曹操!”操闻知,即扯旗角包颈而逃。后人有诗曰:“潼关战败望风逃,孟德怆惶脱锦袍。剑割髭髯应丧胆,马超声价盖天高。”……
书中对马超的勇猛和曹操的狼狈的传神描写,令人方法身处其境,不禁击节称好。西凉兵真是观察入微,从穿红袍到短胡子,把一代枭雄戏弄于股掌之间。事实上曹操不必那么在意的,毕竟短胡子的估计不止他一个,拿令旗包着下巴逃走,未免也太狼狈了吧?
说到这里,不禁想起今天一个网友给我发过来的一个求助文件,他要求按固定格式来统计符合条件的单元格数。
在Excel2010里实现并不难,按颜色排序后选择单元格即可在状态栏显示了(至于有没有公式我并不清楚,这个英文版软件我学得并不多)。现在问题来了:如果用户只有2003版本呢?
答案是:写自定义函数。当然,利用宏表函数也不是不可以,但可能需要很多辅助列。
好了,跟我一起来做吧,按下Alt+F11进入VBE界面,插入一个模块,然后输入以下代码:
Function getColor(TargetRange As Range, TargetCell As Range) As Integer
'定义背景色、前景色和统计变量
Dim intBgColor As Integer
Dim intForeColor As Integer
Dim i As Integer
intBgColor = TargetCell.Interior.ColorIndex
intForeColor = TargetCell.Font.ColorIndex
getColor = 0
For Each cel In TargetRange
'判断目标单元格是否输入内容(仅有空格不予计算)。
If Len(Trim(cel)) > 0 Then
'目标单元格前景色背景色均与条件单元格一一对应才开始计算
If cel.Interior.ColorIndex = intBgColor And cel.Font.ColorIndex = intForeColor Then
i = i + 1
End If
End If
Next
getColor = i
End Function
复制代码
函数调用(如图所示):[attach]49772[/attach]
喜欢就下载来玩玩吧:
[attach]49773[/attach]
作者:
admin
时间:
2012-7-27 10:43
roych开始 玩excel了?
作者:
roych
时间:
2012-7-28 02:58
admin 发表于 2012-7-27 10:43
roych开始 玩excel了?
其实Excel是最早玩的,从2008年底开始上传的动态图表开始,到后来的Excel ADO查询,大概也有好几个示例了。
学Access则是因为工作中Excel不够用的缘故,最后误打误撞地混迹于Access版块时,小妖姐姐曾回复“怎么心里有股酸溜溜的感觉呢”,颇有受宠若惊之感,所以时不时会顺便照看一下,顺便提高下Excel版块人气。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3