|
记得多年前读《三国演义》,读到第五十八回《马孟起兴兵雪恨 曹阿瞒割须弃袍》:
……马超、庞德、马岱引百余骑,直入中军来捉曹操。操在乱军中,只听得西凉军大叫:“穿红袍的是曹操!”操就马上急脱下红袍。又听得大叫:“长髯者是曹操!”操惊慌,掣所佩刀断其髯。军中有人将曹操割髯之事,告知马超,超遂令人叫拿:“短髯者是曹操!”操闻知,即扯旗角包颈而逃。后人有诗曰:“潼关战败望风逃,孟德怆惶脱锦袍。剑割髭髯应丧胆,马超声价盖天高。”……
书中对马超的勇猛和曹操的狼狈的传神描写,令人方法身处其境,不禁击节称好。西凉兵真是观察入微,从穿红袍到短胡子,把一代枭雄戏弄于股掌之间。事实上曹操不必那么在意的,毕竟短胡子的估计不止他一个,拿令旗包着下巴逃走,未免也太狼狈了吧?
说到这里,不禁想起今天一个网友给我发过来的一个求助文件,他要求按固定格式来统计符合条件的单元格数。
在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
复制代码 函数调用(如图所示):
喜欢就下载来玩玩吧:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|