Excel 2010 VBA 入门 044 用VBA进行四舍五入
目录
示例
实现代码
VBA的Round函数
VBA的Round函数与工作表Round函数的区别
在Office软件中使用自定义函数替代VBA的Round函数
示例
在实际工作中,经常需要对数据进行四舍五入的计算。如图所示,该表为某公司销售部门奖金计算表格,如何通过VBA对该表D列进行四舍五入计算,并保留两位小数?
人员 | 奖金标准 | 销售额完成率 | 奖金 | VBA四舍五入结果 | 工作表函数 |
程建华 | 2090 | 1.03606 | 2165.365 | ||
李国敏 | 2070 | 0.961408 | 1990.115 | ||
袁志刚 | 2970 | 0.79698 | 2367.031 | ||
周汉林 | 2930 | 0.64096 | 1878.014 | ||
骈永富 | 2910 | 0.75519 | 2197.603 | ||
孙玉梅 | 2980 | 0.621203 | 1851.186 | ||
陈亚菁 | 2710 | 0.84626 | 2293.365 | ||
康小芸 | 2500 | 1.054302 | 2635.755 | ||
刘晨 | 2510 | 0.976329 | 2450.585 | ||
齐光 | 2760 | 0.619361 | 1709.435 | ||
于健惠 | 2220 | 0.678101 | 1505.385 | ||
王文群 | 2040 | 0.78886 | 1609.274 |
实现代码
Option ExplicitSub 四舍五入计算()Dim RowN As LongFor RowN = 2 To Cells(Rows.Count, "A").End(xlUp).Row'使用VBA函数Cells(RowN, "E").Value = Round(Cells(RowN, "D").Value, 2)'使用工作表函数Cells(RowN, "F").Value = WorksheetFunction.Round(Cells(RowN, "D"), 2)NextEnd Sub
VBA的Round函数
VBA的Round函数是用来进行四舍五入运算的,其语法为
Round(expression[,numdecimalplaces])
其中,参数expression为所要进行四舍五入的数值,整型参数要保留的小数点位数。numdecimalplaces表示所使用VBA函数可直接输入函数名进行使用,而工作表函数之前必须加上WorksheetFunction 。
VBA的Round函数与工作表Round函数的区别
VBA的Round函数与工作表Round函数均为四舍五入函数,两个函数的语法相同,但有着很大的不同,其主要区别如下。
①VBA中Round函数的第2个参数可省略,当省略时,表示返回整数。工作表Round函数的第2个参数不可省略。
②VBA中Round函数的第2个参数不可以为负数。工作表Round函数的第2个参数可以为负数,当为负数时,表示向小数点左边取保留位数,如以下表达式将返回120。
WorksheetFunction.Round( 123,-1)
③工作表Round函数进行四舍五入时,将查看保留位数的后一位数字,该数字大于或等于5时,则进1,反之不进位。而VBA的Round函数规则如下:
- ·当保留位数的后一位数字大于5时,则进位。
- ·当保留位数的后一位数字小于5时,则不进位。
- ·当保留位数的后一位数字为5时,若该位之后存在任何大于0的数字,则进位。
- ·当保留位数的后一位数字为5时,若该位之后的数字为0且保留位的数字为奇数时,则进位。
- ·当保留位数的后一位数字为5时,若该位之后的数字为0且保留位的数字为偶数时,则不进位。
运用上述规则,若计算表达式Round (Number,2)的值时,随着Number的数值不同,结果如表所示。
表VBA Round函数示例
Number的值 |
结 果 |
123.456 |
123.46 |
123.454 |
123.45 |
123.455 |
123.46 |
123.445 |
123.44 |
123.445001 |
123.45 |
123.445000 |
123.44 |
由于VBA的Round函数和工作表函数Round的规则不同,则本例计算结果会导致细微的不同。大多数情况下,使用工作表函数Round能得到开发者所预期的结果。
在Office软件中使用自定义函数替代VBA的Round函数
在Office其他软件的VBA中,由于仅提供了VBA的Round函数,从而给开发者造成一些困扰。一般地,可以使用自定义函数编写一个MyRound函数来替代Round函数,参考代码如下。
Function 自定义四舍五入函数(ByVal number As Double, ByVal digit As Long) '参数1为操作数,参数2为保留位数Dim tmpNum As DoubleDim tmpnum1 As Long '用于保存保留位的后一位数字'将原数字扩大tmpNum = Int(number * 10 ^ (digit + 1))'获取保留位数之后的一位数字tmpnum1 = tmpNum Mod 10'四舍五入进位法则If tmpnum1 >= 5 ThentmpNum = tmpNum + 10 - tmpnum1ElsetmpNum = tmpNum - tmpnum1End If'结果返回myround = tmpNum / 10 ^ (digit + 1)
End Function
Excel 2010 VBA 入门 044 用VBA进行四舍五入相关推荐
- Excel 2010 VBA 入门 014 获取VBA帮助
通过录制宏可以得到许多代码,可是看不懂代码,只需要将光标定位在需要帮助的地方,按[F1]键即可打开相应的帮助文件.以获取函数Msgbox帮助时,操作步骤如下. 步骤1 按组合键[Alt+F11]打 ...
- Excel 2010 VBA 入门 103 利用VBA批量插入图片
目录 示例 代码: Shapes.Shape和 ShapeRange Shapes对象插入图形的方法 Excel的坐标 图形大小的调整 获取图片的原始大小 将图片按比例缩放至单元格 图片批量插入的步骤 ...
- Excel 2010 VBA 入门 102 利用VBA批量发送邮件
目录 示例 代码 CDO组件 CDO. Message. Configuration对象 前期绑定与后期绑定 New关键字创建对象 添加邮件的附件 示例 如图所示,该表为某公司员工工资单.现需要将该表 ...
- Excel 2010 VBA 入门 104 利用VBA生成图表
目录 示例 代码 ChartObjects集合和ChartObject对象 数据系列(Series)对象 添加图表的其他方法 1.通过添加Chart对象添加图表 2.通过Shapes集合的AddCha ...
- Excel 2010 VBA 入门 034 创建图片批注
目录 批注(Comment)对象 批注的添加与删除 FiIIFormat对象 OnError语句 示例: 批注(Comment)对象 Comment对象是单元格的一个属性,表示单元格的批注.Comme ...
- Excel 2010 VBA 入门 001显示开发工具选项卡
目录 VBA简介 宏简介 显示"开发工具"选项卡 VBA简介 Visual Basic for Application (VBA)是Visual Basic的一种宏语言,是依附 ...
- Excel 2010 VBA 入门 006 设置宏安全性
目录 操作方法 步骤1单击"开发工具"选项卡中的"宏安全性"按钮,如图所示. 步骤2在"信任中心"的"宏设置"选项中 ...
- 《Excel 2019 VBA入门与应用(视频教学版)》图书简介
#好书推荐##好书奇遇季#<Excel 2019 VBA入门与应用(视频教学版)>京东当当天猫都有发售.Excel VBA是Excel数据分析必须掌握的工具,学习本书能够提高Excel完成 ...
- Excel VBA 入门(零)
本教程所用系统环境: Windows 10 Excel 2013 1. 添加开发工具 打开Excel,依然找到"文件"->"选项"->"自 ...
最新文章
- ux设计_从UX设计人员的角度来看Microsoft Build 2018
- 6、计算机图形学——着色频率、插值与插值的矫正
- awk -f 分隔符 命令_Linux三剑客之awk
- flask读取数据库(mysql)并展示表格(讲解获取表头的方法)【附上flask好看点的helloworld】
- IDEA中无法识别servlet类或找不到javax.servlet.*
- 判断js变量是否定义,
- Linux升级python版本
- 通过纯真IP数据库查询IP归属地信息
- 一波三折:杜邦线母头制作的故事
- 解除微信授权的html5网页,微信授权登录网页管理在哪里看?如何取消授权
- office图标空白异常解决方法
- Java获取图片大小 及 尺寸 图片压缩 jpg压缩
- c# 回调先进先出_Stack和Queue:后进先出和先进先出
- linux系统防火墙关闭22端口,Linux系统防火墙关闭及端口开放
- cocos2dx入门1:关于Cocos Creator
- Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转)
- python基本使用
- CS231n 两层神经网络反向传播实现
- 资源 | 分享几个强大的网站
- 筷子SaaS,爱获客,牛视,树品,短视频营销源码独立部署,一站式服务
热门文章
- 开源社区的长期主义与新变化 — CloudWeGo 开源社区实践
- v-for中的key问题
- java守护线程的使用场景_浅谈Java守护线程
- 戴尔E14S服务器磁盘阵列配置实例(系统盘RAID 1,存储数据盘RAID 5)
- 计算机和角谷猜想的作文,数学童话日记
- 微信设置特殊昵称,太上头啦•ɷ•~
- BAT设计师推荐的非常好用的15个优质SKETCH插件
- Blink SQL去重语句
- 计算机中承担系统软件和应用软件,中国大学MOOC: 计算机中有多个处理器,其中承担系统软件和应用软件运行任务的处理器,称为“中央处理器”。...
- 数据库系统原理【自考教材笔记】