Excel中有一个公式sign
,其返判断数字的符号,正数返回值为1,负数返回值为-1,0返回值为0。
但是在VBA中即无法使用Application.WorksheetFunction
调用工作表函数,也没有提供相应的VBA函数实现此功能,也许MS的产品经理认为根本不需要这个功能,呵呵。
前一阵子在论坛看板有个帖子就是关于这个的提问,其实实现起来也很简单,单行IIF
嵌套就可以实现,代码如下。
Sub demo1()
n = 0
Debug.Print IIf(n < 0, -1, IIf(n = 0, 0, 1))
n = 100
Debug.Print IIf(n < 0, -1, IIf(n = 0, 0, 1))
n = -100
Debug.Print IIf(n < 0, -1, IIf(n = 0, 0, 1))
End Sub
运行实例代码,结果如下。
0
1
-1
IIF
用法很简单,这里就不再赘述。
这里给大家提供一个另类的实现思路,利用逻辑值True
和False
的整数值,也可以快速实现符号判断,代码如下。
Sub demo2()
n = 0
Debug.Print Int(n < 0) - Int(n > 0)
n = 100
Debug.Print Int(n < 0) - Int(n > 0)
n = -100
Debug.Print Int(n < 0) - Int(n > 0)
End Sub
需要大家注意的是True
和False
的整数值为-1
和0
,通过组合两个判断条件,然后将逻辑值进行运算,得到相应的结果。