【发布时间】:2026-01-16 11:00:02
【问题描述】:
我正在尝试创建一个计算 2 点之间距离的函数,但是当我使用 mmult 和 transpose 函数时出现错误,而我使用 sumpriduct 函数它工作得很好,但我只是想了解原因
你能帮帮我吗?
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
【问题讨论】:
-
可能是因为您要获得一个数组函数,所以您是否将其作为数组公式输入 - 带括号 - ?
-
是的,我解决它的方法是使用 VarType() 函数,我注意到在使用 mmult 时,它返回一个矩阵数据类型,所以我无法应用平方根或任何其他转换,所以我简单地对我的矩阵求和,然后我可以应用平方根。当然这相当于使用 sumproduct()。