我在创建一个函数来计算2点之间的距离,但是当我使用mmult和转置函数时,出现错误,而我使用了sumpriduct函数,它完美地工作,但我只是想了解为什么欧几里德距离VBA(移调函数在VBA中)
你能帮我吗?
Function distancia(RangoA As Range, RangoB As Range) As Long
Dim s() As Variant
Dim t() As Variant
Dim r() As Variant
s = RangoA
t = RangoB
ReDim r(UBound(s), 1)
For i = 1 To UBound(s)
r(i, 1) = s(i, 1) - t(i, 1)
Next i
distancia = Application.MMult(r, Application.Transpose(r))
End Function
可能是因为你要获得一个数组函数,你是否将它作为数组公式输入 - 使用括号? – Sgdva
是的,我做了什么来解决它是使用VarType()函数,我注意到当使用mmult时,它返回一个矩阵数据类型,所以我无法应用平方根或任何其他转换,所以我简单地总结我的矩阵然后我可以应用平方根。当然这相当于使用sumproduct()。 – Moreno