Мне нужно найти евклидово расстояние между двумя точками. У меня есть объединенные координаты в одной ячейке. Каждый набор координат подобен (x1,y1,z1) и (x2,y2,z2) .

Как я могу сделать это в Excel?

2 ответа2

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 будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить UDF:

  1. откройте окно VBE, как указано выше
  2. очистить код
  3. закройте окно VBE

Чтобы использовать 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

Макросы должны быть включены, чтобы это работало!

Вот пример:

0

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

Или, как говорится в статье в Википедии :

Евклидова формула расстояния для 3-х измерений

Изменить: увидел после того факта, что у вас есть сцепленные клетки. Это немного усложняет ситуацию. Если вы можете разделить 3 части каждой координаты, это тривиально. В противном случае мне нужно узнать немного больше о том, о каком диапазоне чисел мы можем говорить? (Я думаю о маленькой =left() =mid() =right магии.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .