目录

示例

实现代码

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进行四舍五入相关推荐

  1. Excel 2010 VBA 入门 014 获取VBA帮助

    通过录制宏可以得到许多代码,可是看不懂代码,只需要将光标定位在需要帮助的地方,按[F1]键即可打开相应的帮助文件.以获取函数Msgbox帮助时,操作步骤如下. 步骤1   按组合键[Alt+F11]打 ...

  2. Excel 2010 VBA 入门 103 利用VBA批量插入图片

    目录 示例 代码: Shapes.Shape和 ShapeRange Shapes对象插入图形的方法 Excel的坐标 图形大小的调整 获取图片的原始大小 将图片按比例缩放至单元格 图片批量插入的步骤 ...

  3. Excel 2010 VBA 入门 102 利用VBA批量发送邮件

    目录 示例 代码 CDO组件 CDO. Message. Configuration对象 前期绑定与后期绑定 New关键字创建对象 添加邮件的附件 示例 如图所示,该表为某公司员工工资单.现需要将该表 ...

  4. Excel 2010 VBA 入门 104 利用VBA生成图表

    目录 示例 代码 ChartObjects集合和ChartObject对象 数据系列(Series)对象 添加图表的其他方法 1.通过添加Chart对象添加图表 2.通过Shapes集合的AddCha ...

  5. Excel 2010 VBA 入门 034 创建图片批注

    目录 批注(Comment)对象 批注的添加与删除 FiIIFormat对象 OnError语句 示例: 批注(Comment)对象 Comment对象是单元格的一个属性,表示单元格的批注.Comme ...

  6. Excel 2010 VBA 入门 001显示开发工具选项卡

    目录 VBA简介 宏简介 显示"开发工具"选项卡 ​ VBA简介 Visual Basic for Application (VBA)是Visual Basic的一种宏语言,是依附 ...

  7. Excel 2010 VBA 入门 006 设置宏安全性

    目录 操作方法 步骤1单击"开发工具"选项卡中的"宏安全性"按钮,如图所示. ​ 步骤2在"信任中心"的"宏设置"选项中 ...

  8. 《Excel 2019 VBA入门与应用(视频教学版)》图书简介

    #好书推荐##好书奇遇季#<Excel 2019 VBA入门与应用(视频教学版)>京东当当天猫都有发售.Excel VBA是Excel数据分析必须掌握的工具,学习本书能够提高Excel完成 ...

  9. Excel VBA 入门(零)

    本教程所用系统环境: Windows 10 Excel 2013 1. 添加开发工具 打开Excel,依然找到"文件"->"选项"->"自 ...

最新文章

  1. ux设计_从UX设计人员的角度来看Microsoft Build 2018
  2. 6、计算机图形学——着色频率、插值与插值的矫正
  3. awk -f 分隔符 命令_Linux三剑客之awk
  4. flask读取数据库(mysql)并展示表格(讲解获取表头的方法)【附上flask好看点的helloworld】
  5. IDEA中无法识别servlet类或找不到javax.servlet.*
  6. 判断js变量是否定义,
  7. Linux升级python版本
  8. 通过纯真IP数据库查询IP归属地信息
  9. 一波三折:杜邦线母头制作的故事
  10. 解除微信授权的html5网页,微信授权登录网页管理在哪里看?如何取消授权
  11. office图标空白异常解决方法
  12. Java获取图片大小 及 尺寸 图片压缩 jpg压缩
  13. c# 回调先进先出_Stack和Queue:后进先出和先进先出
  14. linux系统防火墙关闭22端口,Linux系统防火墙关闭及端口开放
  15. cocos2dx入门1:关于Cocos Creator
  16. Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转)
  17. python基本使用
  18. CS231n 两层神经网络反向传播实现
  19. 资源 | 分享几个强大的网站
  20. 筷子SaaS,爱获客,牛视,树品,短视频营销源码独立部署,一站式服务

热门文章

  1. 开源社区的长期主义与新变化 — CloudWeGo 开源社区实践
  2. v-for中的key问题
  3. java守护线程的使用场景_浅谈Java守护线程
  4. 戴尔E14S服务器磁盘阵列配置实例(系统盘RAID 1,存储数据盘RAID 5)
  5. 计算机和角谷猜想的作文,数学童话日记
  6. 微信设置特殊昵称,太上头啦•ɷ•~
  7. BAT设计师推荐的非常好用的15个优质SKETCH插件
  8. Blink SQL去重语句
  9. 计算机中承担系统软件和应用软件,中国大学MOOC: 计算机中有多个处理器,其中承担系统软件和应用软件运行任务的处理器,称为“中央处理器”。...
  10. 数据库系统原理【自考教材笔记】