如何用vba或excel函数公式求任意一个数值的小数位数?

一个数可以是整数,也可以是带小数的。

 

凡是带小数的就会有小数位数。

 

有时候我们需要从给定的一个数值中获取该数值具有的小数位数。

 

比如1.001 具有3位小数

1.01 具有2位小数

1具有0位小数。

 

今天,介绍用函数和VBA两种方法求任意一个数值具有的小数位数的方法。

1.函数公式

 

假设这个数在A1单元格,可以使用如下的函数公式获取它的小数位数:

 

=TEXT(LEN(A1)-LEN(INT(A1))-1,”0;\0;0″)

 

2.VBA

类似的,如果要在vba中返回任意一个数值的小数位数,可以使用如下的自定义函数:

Function GetDigits(ByVal i)
GetDigits = VBA.Format(Len(i) – Len(Int(i)) – 1, “0;\0;0”)
End Function

原理解释:

为了计算小数位数,通过将原来的字符长度与取整后的数值的长度做对比,然后通过格式化函数,将负数和0都强制置0,就可以避免没有小数位数的时候出现的负值,从而使得公式适用于包含整数、负数在内的任意一个数值。

       

发表评论