Мне нужно найти евклидово расстояние между двумя точками. У меня есть объединенные координаты в одной ячейке. Каждый набор координат подобен (x1,y1,z1)
и (x2,y2,z2)
.
Как я могу сделать это в Excel?
Мне нужно найти евклидово расстояние между двумя точками. У меня есть объединенные координаты в одной ячейке. Каждый набор координат подобен (x1,y1,z1)
и (x2,y2,z2)
.
Как я могу сделать это в Excel?
Попробуйте следующую пользовательскую функцию (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) очень просты в установке и использовании:
Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx
Чтобы удалить UDF:
Чтобы использовать UDF из Excel:
= Расстояние (А1, А2)
Чтобы узнать больше о макросах в целом, смотрите:
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
Макросы должны быть включены, чтобы это работало!
Вот пример:
=sqrt(power(x2-x1,2)+power(y2-y1,2)+power(z2-z1,2))
Или, как говорится в статье в Википедии :
Изменить: увидел после того факта, что у вас есть сцепленные клетки. Это немного усложняет ситуацию. Если вы можете разделить 3 части каждой координаты, это тривиально. В противном случае мне нужно узнать немного больше о том, о каком диапазоне чисел мы можем говорить? (Я думаю о маленькой =left() =mid() =right
магии.)