【VBA研究】取整函数的使用
VBA取整函数有好几个,用法也不同,有的还可以在工作表中使用,下面根据需求分别说明:
1、四舍五入取整,一般用于取近似数
(1)CInt:只能在VBA中使用
CInt(12.56)=13,
CInt(12.46)=12,
CInt(-12.56)=-13,
CInt(-12.46)=-12
(2)Round:在VBA中使用和CInt相同
Round(12.56)=13,
Round(12.46)=12,
Round(-12.56)=-13,
Round(-12.46)=-12,
此函数实际上有两个参数,第二个参数表示取小数的位数,或略表示取整,即小数位数为0。该函数还可以在工作表中使用,使用时两个参数必须写全,即:
Round(12.56,0)=13,
Round(12.56,1)=12.6
2、取整数部分,小数舍弃,常用于取整数和余数
(1)Fix:只能在VBA中使用
Fix(12.56)=12,
Fix(12.46)=12,
Fix(-12.56)=-12,
Fix(-12.46)=-12
(2)Int:在VBA和工作表中都可以使用
此函数取正数时和Fix相同,负数时往绝对值高的方向取,就是说,取小于其值得整数,
Int(12.56)=12,
Int(12.46)=12,
Int(-12.56)=-13,
Int(-12.46)=-13
举例:买50个鸡蛋,12个鸡蛋一盒,那么需要Fix(50/12)=4盒,零头50 mod 12=2个
3、往上取整,只要有小数,整数部分就加1,常用于资费计算
邮件资费定价时常用不足500g按500g计算,即501g相当于2个500g计算资费。本功能VBA没有专门的函数,不过可以用数值+0.5再四舍五入取整实现,例如:
CInt(12.56+0.5)=13,
CInt(12.46+0.5)=13,
CInt(12.01+0.5)=13
不过,工作表中还是有一个Ceiling函数可以实现这个功能,Ceiling(12.01,1)=13,第二个参数1表示舍入到最近的整数。VBA中可以用下列方式引用:
a = Application.Ceiling(12.06, 1) 'a=13
Ceiling函数功能比较复杂,这儿就不详细介绍了。
4、关于Round函数进行四舍五入
VBA中Round函数进行四舍五入并不是逢5就入,例如:
round(0.5)=0、 round(1.5)=2 、 round(2.5)=2 、round(3.5)= 4 、round(4.5)=4 ,难到还分奇偶?答案是确实分奇偶,在VBA中Round函数是采用“银行家舍入”,建议大家在VBA中慎重使用Round函数来四舍五入。什么是“银行家舍入”呢,定义如下:
“四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一”。这个四舍五入法是一个国际标准,大部分的编程软件都使用的是这种方法,据说国际上一般都是用这种方法的。
如果在Excel VBA中进行四舍五入处理,也可以直接调用Excel工作表函数,达到直接四舍五入的目的Application.Round(A,B),例如,下面例句可以看出运行效果:
a = Application.Round(12.5, 0) 'a=13
b = Round(12.5) 'b=12