Muszę znaleźć odległość euklidesową między dwoma punktami. Mam połączone współrzędne w jednej komórce. Każdy zestaw współrzędnych jest podobny (x1,y1,z1)
i (x2,y2,z2)
.
Jak mogę to zrobić w programie Excel?
Muszę znaleźć odległość euklidesową między dwoma punktami. Mam połączone współrzędne w jednej komórce. Każdy zestaw współrzędnych jest podobny (x1,y1,z1)
i (x2,y2,z2)
.
Jak mogę to zrobić w programie Excel?
Odpowiedzi:
Wypróbuj następującą funkcję zdefiniowaną przez użytkownika (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
Funkcje definiowane przez użytkownika (UDF) są bardzo łatwe w instalacji i obsłudze:
Po zapisaniu skoroszytu UDF zostanie z nim zapisany. Jeśli korzystasz z wersji programu Excel później niż w 2003 r., Musisz ją zapisać plik jako .xlsm, a nie .xlsx
Aby usunąć UDF:
Aby użyć UDF z Excela:
= odległość (A1, A2)
Aby dowiedzieć się więcej o makrach w ogóle, zobacz:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
i
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
i po szczegóły na temat UDF, zobacz:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
Makra muszą być włączone, aby działało!
Oto przykład:
=sqrt(power(x2-x1,2)+power(y2-y1,2)+power(z2-z1,2))
Lub jako Artykuł w Wikipedii stwierdza:
Edytować: Zobaczyłem, że masz połączone komórki. To trochę komplikuje. Jeśli możesz oddzielić 3 części każdej współrzędnej, jest to trywialne. W przeciwnym razie muszę wiedzieć trochę więcej na temat zakresu liczb, o których możemy mówić? (Myślę trochę =left() =mid() =right
magia.)
=sqrt(power(left(A2,1)-left(A1,1),2) + power(mid(A2,3,1)-mid(A1,3,1),2) + power(right(A2,1)-right(A1,1),2))