以字符串形式存储坐标的两点之间的欧几里得距离

以字符串形式存储坐标的两点之间的欧几里得距离

我需要找到两点之间的欧几里得距离。我在一个单元格中有一个连接的坐标。每组坐标都类似于(x1,y1,z1)(x2,y2,z2)

我如何在 Excel 中执行此操作?

答案1

尝试以下用户定义函数(UDF)

Public Function distance(s1 As String, s2 As String) As Double
    Dim zum As Double, i As Long
    ary1 = Split(s1, ",")
    ary2 = Split(s2, ",")

    zum = 0
    For i = 0 To 2
        zum = zum + (CDbl(ary1(i)) - CDbl(ary2(i))) * (CDbl(ary1(i)) - CDbl(ary2(i)))
    Next i

    distance = Sqr(zum)
End Function

用户定义函数 (UDF) 非常容易安装和使用:

  1. ALT-F11 打开 VBE 窗口
  2. ALT-I ALT-M 打开新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx

要删除 UDF:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要从 Excel 使用 UDF:

=距离(A1,A2)

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能使其工作!

以下是一个例子:

在此处输入图片描述

答案2

=sqrt(power(x2-x1,2)+power(y2-y1,2)+power(z2-z1,2))

或者作为维基百科文章状态:

三维欧几里得距离公式

编辑: 事后发现您已将单元格连接起来。这让事情变得有点复杂。如果您可以分离每个坐标的 3 个部分,那么这很简单。否则,我需要更多地了解我们可能讨论的数字范围?(我在想一个小=left() =mid() =right魔术。)

相关内容