之所以想到这个话题,是想利用coreldraw自动生成一批序列号并分页排版。比如每一页需要放置10个序列号,那么当序列号总数为42个的时候,我需要生成的页面是5个,最后一个页面仅安放两个序列号即可。所以计算所需要的页面的时候,需要用到向上取整的函数,利用序列号总值去除以每一页的实际数量,比如用42去除以10,得数为4.2,向上取整为5,得出结果为所需生成的页面数。
vba中的取整函数们
在vba中,Int(),Fix(),cint()这三个函数都能用来对浮点数进行取整运算,Int()的作用是对浮点数向下取整,即小于等于这个浮点数的最大整数;Fix()函数简单粗暴的仅保留浮点数的整数部分;cint()的做法则接近于我们数学上的四舍五入,但对于小数部分刚好为0.5的浮点数,它会向最接近该浮点数的偶数去取整。
数字 | 返回值 | ||
---|---|---|---|
int函数 | fix函数 | cint函数 | |
4.6 | 4 | 4 | 5 |
10.2 | 10 | 10 | 10 |
2.5 | 2 | 2 | 2 |
1.5 | 1 | 1 | 2 |
-3.5 | -4 | -3 | -4 |
-4.5 | -5 | -4 | -4 |
向上取整的实现
博主并没能在百度上搜索到用于vba向上取整的专有函数,仅找到了实现向上取整的方法,还是利用int()函数:
Sub test()
testnum = 4.2
MsgBox -Int(-testnum)
End Sub
运行上述程序,系统弹窗中显示值为“5”,将testnum的值修改为-4.2之后,系统弹窗中显示“-4”。程序利用两个负号,巧妙的实现了向上取整。