我想在VBA中计算atan2,但我不确定该函数是否存在(甚至不确定在哪里可以找到内置VBA函数的规范列表)。我没有使用Excel,所以不可能调用工作表。
我可以自己implement atan2,但如果可能的话,我宁愿避免这样做。
发布于 2011-02-25 21:12:33
也许这段代码适合你:
Private Const Pi As Double = 3.14159265358979
Public Function Atn2(y As Double, x As Double) As Double
If x > 0 Then
Atn2 = Atn(y / x)
ElseIf x < 0 Then
Atn2 = Sgn(y) * (Pi - Atn(Abs(y / x)))
ElseIf y = 0 Then
Atn2 = 0
Else
Atn2 = Sgn(y) * Pi / 2
End If
End Function发布于 2012-06-29 04:28:35
正如MarkJ之前指出的,当X<0和y=0时,accepted answer将失败。我相信下面的方法会一直起作用:
Function ArcTan2(X As Double, Y As Double) As Double
Private Const PI As Double = 3.14159265358979
Private Const PI_2 As Double = 1.5707963267949
Select Case X
Case Is > 0
ArcTan2 = Atn(Y / X)
Case Is < 0
ArcTan2 = Atn(Y / X) + PI * Sgn(Y)
If Y = 0 Then ArcTan2 = ArcTan2 + PI
Case Is = 0
ArcTan2 = PI_2 * Sgn(Y)
End Select
End Function它利用Sgn( 0 )在x和y都为0的情况下返回0。
发布于 2011-02-25 20:39:55
要获取列表,请在模块中键入
VBA.Math或者使用对象浏览器。你会发现Atn和Tan,还有其他的,但是列表很短,ATan2也不包括在内。
如果要添加对Excel库的引用,可以使用:
Excel.WorksheetFunction.Atan2编辑:您可以从任何允许您添加对Excel库的引用的Office应用程序中调用Excel工作表函数。这并不意味着使用Excel或工作表,而只是使用函数。
https://stackoverflow.com/questions/5117265
复制相似问题