Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2683|回复: 5

[VBA] 014-优化“成绩评语”-疑难千寻千解丛书(VBA)

[复制链接]
发表于 2011-1-22 14:13 | 显示全部楼层 |阅读模式
ET疑难千寻千解丛书之EXCEL2010编程与实践
罗刚君 章兰新 黄朝阳 编著

疑难14
如何优化过程“成绩评语”
在成绩表中,B列存放学生成绩,要求对不及格成绩添加蓝色背景,在C列标识“不及格”,而对95分以上者标识“优秀”,最后在E1单元格显示不及格人数。实现此需求可以用以下代码,如何对它进行优化?

  1. Sub 成绩评语() ‘成绩评语及不及格数量计算
  2.     Dim rng As Range, i As Integer
  3.     For Each rng In Range([b2], Cells(Rows.Count, 2).End(xlUp))  
  4.     '遍历所有成绩
  5.         If rng < 60 Then '如果小于60
  6.             i = i + 1  '累计不及格人员数量
  7.             [c1] = "评语"  '写标题
  8.             rng.Offset(0, 1) = "不及格"  '对不及格成绩写标语
  9.             rng.Interior.ColorIndex = 5  '对不及格成绩着色
  10.             [d1] = "不及格:" & i & "人"  '记录不及格人员数量
  11.             ElseIf rng > 95 Then  '如果大于95分
  12.             rng.Offset(0, 1) = "优秀"  '大于95分者评为优秀
  13.         End If
  14.     Next rng
  15. End Sub
复制代码
è解决方案
清除循环语句中不必要的代码,将其移到循环之外,减少对象写入次数。
í操作方法
步骤1
将不需要循环的语句置于循环体之外,可以减少代码重复执行,完整代码如下:

  1. Sub 成绩评语及不及格数量计算2()  '将不需要循环的代码移到循环语句外
  2.     Dim rng As Range, i As Integer
  3.     [c1] = "评语"  '写标题
  4.     For Each rng In Range([b2], Cells(Rows.Count, 2).End(xlUp))  
  5.     '遍历所有成绩
  6.         If rng < 60 Then    '如果小于60
  7.             i = i + 1  '累计不及格人员数量
  8.             rng.Offset(0, 1) = "不及格"  '对不及格成绩写标语
  9.             rng.Interior.ColorIndex = 5  '对不及格成绩着色
  10.         ElseIf rng > 95 Then  '如果大于95分
  11.             rng.Offset(0, 1) = "优秀"  '大于95分者评为优秀
  12.         End If
  13.     Next rng
  14.     [d1] = "不及格:" & i & "人"  '记录不及格人员数量
  15. End Sub
复制代码
步骤2
分别执行两段代码,它们可以实现相同的功能,执行结果如图所示。

=============================
上摘自《EXCEL2010编程与实践》

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2011-1-22 14:16 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2011-1-22 14:16 | 显示全部楼层
妖言:

有时不得不表扬一下EXCEL同学,对代码的执行总是任劳任怨,即使是没有必要的重复,也不会冒出半句不满意的话。
回复

使用道具 举报

发表于 2011-1-22 14:23 | 显示全部楼层
谁在做广告?
回复

使用道具 举报

发表于 2011-1-22 14:29 | 显示全部楼层
faliming7 发表于 2011-1-22 14:23
谁在做广告?

都广告了14期了才发现{:04:}
回复

使用道具 举报

发表于 2011-4-9 21:28 | 显示全部楼层
{:011:}{:011:}{:011:}{:011:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-1 20:43 , Processed in 0.248789 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表