Расстояние между двумя точками по координатам в excel

В этом учебном материале по Excel мы рассмотрим примеры того, как рассчитать расстояние между двумя точками на координатной плоскости.

Как в Excel рассчитать расстояние между двумя точками

Основная формула

=КОРЕНЬ((x2x1)^2+(y2y1)^2)

Описание

Чтобы вычислить длину отрезка по координатам двух точек на линии, вы можете использовать формулу расстояния, адаптированную для синтаксиса формул Excel. В показанном примере формула в G5, имеет следующий вид:

=КОРЕНЬ((D5B5)^2+(E5C5)^2)

где координаты двух точек указаны в столбцах с B по E.

Пояснение

Длину линии можно рассчитать по формуле расстояния, которая выглядит так:

Расстояние — это квадратный корень из изменения x в квадрате плюс изменение y в квадрате, где две точки даны в форме (x1, y1) и (x2, y2).
Формула расстояния — это пример примененной теоремы Пифагора, где изменение x и изменение y соответствуют двум сторонам прямоугольного треугольника, а гипотенуза — вычисляемому расстоянию.
В Excel формулу расстояния можно записать с помощью оператора экспоненты ^ и функции КОРЕНЬ следующим образом:

=КОРЕНЬ((D5B5)^2+(E5C5)^2)

В соответствии с порядком операций Excel, изменение x и изменение y вычисляется, затем возводится в квадрат, и два результата складываются вместе и передаются в функцию КОРЕНЬ, которая возвращает квадратный корень из суммы в качестве окончательного результата:

=КОРЕНЬ((D5B5)^2+(E5C5)^2)

=КОРЕНЬ((6)^2+(8)^2)

=КОРЕНЬ(36+64)

=КОРЕНЬ(100)

=10

Функцию СТЕПЕНЬ также можно использовать вместо оператора экспоненты ^ следующим образом:

=КОРЕНЬ(СТЕПЕНЬ(D5B5;2)+СТЕПЕНЬ(E5C5;2))

с тем же результатом.

 

Здравствуйте. Подскажите, пожалуйста, есть ли в арсенале EXCEL функция, которая может выдать расстояние между двумя точками если на вход ей подаются координаты этих точек?

 

{quote}{login=Сергей123}{date=02.05.2008 09:30}{thema=определение расстояния между 2 точками по координатам}{post}Здравствуйте. Подскажите, пожалуйста, есть ли в арсенале EXCEL функция, которая может выдать расстояние между двумя точками если на вход ей подаются координаты этих точек?{/post}{/quote}  
Специальной функции нет.  
Но есть все необходимое:  
+ сложение  
— вычитание  
() заключение выражении в скобки  
^2 возведение в квадрат  
КОРЕНЬ() корень квадратный  
И даже есть:  
СУММКВРАЗН() сумма квадратов разностей

 

Sh_Alex

Пользователь

Сообщений: 732
Регистрация: 01.01.1970

{quote}{login=Сергей123}{date=02.05.2008 09:30}{thema=определение расстояния между 2 точками по координатам}{post}Здравствуйте. Подскажите, пожалуйста, есть ли в арсенале EXCEL функция, которая может выдать расстояние между двумя точками если на вход ей подаются координаты этих точек?{/post}{/quote}  

  В Excel нет такой функции, но можно создать пользовательские. Я, как геодезист, предлагаю несколько, в том числе и нужную Вам.  
С уважением, Александр.

 

Sh_Alex

Пользователь

Сообщений: 732
Регистрация: 01.01.1970

Не прекрепился файл, пробую еще раз.  
С уважением, Александр.

 

Sh_Alex

Пользователь

Сообщений: 732
Регистрация: 01.01.1970

{quote}{login=Sh_Alex}{date=03.05.2008 10:03}{thema=определение расстояния между 2 точками по координатам}{post}Не прекрепился файл, пробую еще раз.  
С уважением, Александр.{/post}{/quote}  
С третьего захода получится?

 

Видать файлу оооочень не хочется сюда…  
Жил себе потихоньку на своем диске, а тут — посылают куда-то…

 

{quote}{login=}{date=03.05.2008 11:15}{thema=}{post}Видать файлу оооочень не хочется сюда…  
Жил себе потихоньку на своем диске, а тут — посылают куда-то…{/post}{/quote}  
огромная просьба еще раз попробовать прикрепить файл. И еще вопрос, я знаю что в Delphi такая функция есть. Можно ли такую функцию вызвать в Excel?

 

Сергей, уже дважды было сказано — нет такой функции. Спроси в третий раз. Может найдется.

 

{quote}{login=}{date=03.05.2008 09:38}{thema=}{post}Сергей, уже дважды было сказано — нет такой функции. Спроси в третий раз. Может найдется.{/post}{/quote}  

  Мы не гордые.Можем унизится пару раз. Спрашиваю в 3 раз. Есть ли возможность вызывать в Excel функции написанные не в Excel? Краем уха (так как я чайник в этом деле) слышал что это как то с DLL связано.    

  Александр, надеюсь что  у вас все таки получится.  
С уважением.

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

{post}{quote}{login=Сергей123}Мы не гордые.Можем унизится пару раз. Спрашиваю в 3 раз.{/post}{/quote}  

  Тёзка, ты что, издеваешься?!  
Ну сразу же дали правильный ответ.  
вот формула:  
=КОРЕНЬ((X1-X2)^2+(Y1-Y2)^2)  
подставить свои координаты вместо X1,Y1 и X2,Y2 сможешь??!  

  или написать свою библиотеку, думаешь проще?! ;-))))

 

Sh_Alex

Пользователь

Сообщений: 732
Регистрация: 01.01.1970

Еще попытка.  
В модуле все функции.  
С уважением, Александр.

 

Guest

Гость

#12

04.05.2008 12:51:42

Хочу поблагодарить Sh_Alex. Спасибо.  

  =КОРЕНЬ((X1-X2)^2+(Y1-Y2)^2)  
подставить свои координаты вместо X1,Y1 и X2,Y2 сможешь??!  

  подставить смогу, я уже выяснил эту формулу.Мне в коде VBA нужна была функция.

I’m currently drawing up a mock database schema with two tables: Booking and Waypoint.

  • Booking stores the taxi booking information.

enter image description here

  • Waypoint stores the pickup and drop off points during the journey, along with the lat lon position. Each sequence is a stop in the journey.

enter image description here

How would I calculate the distance between the different stops in each journey (using the lat/lon data) in Excel?

Is there a way to programmatically define this in Excel, i.e. so that a formula can be placed into the mileage column (Booking table), lookup the matching sequence (via bookingId) for that journey in the Waypoint table and return a result?

Example 1:

A journey with 2 stops:

1   1   1   MK4 4FL, 2, Levens Hall Drive, Westcroft, Milton Keynes 52.002529   -0.797623
2   1   2   MK2 2RD, 55, Westfield Road, Bletchley, Milton Keynes   51.992571   -0.72753

4.1 miles according to Google, entry made in mileage column in Booking table where id = 1

Example 2:

A journey with 3 stops:

6   3   1   MK7 7DT, 2, Spearmint Close, Walnut Tree, Milton Keynes 52.017486   -0.690113
7   3   2   MK18 1JL, H S B C, Market Hill, Buckingham              52.000674   -0.987062
8   3   1   MK17 0FE, 1, Maids Close, Mursley, Milton Keynes        52.040622   -0.759417

27.7 miles according to Google, entry made in mileage column in Booking table where id = 3

Given a list of geographic coordinate pairs, you can implement the Haversine formula directly in Excel.


The simplest way to use this (or a more accurate, but I think it’s not your case) formula consists into press Alt+F11 to open the VBA Editor, click Insert --> Module and then (copy and) paste e.g. the code kindly suggested by blah238.

Public Function getDistance(latitude1, longitude1, latitude2, longitude2)  
earth_radius = 6371  
Pi = 3.14159265  
deg2rad = Pi / 180  

dLat = deg2rad * (latitude2 - latitude1)  
dLon = deg2rad * (longitude2 - longitude1)  

a = Sin(dLat / 2) * Sin(dLat / 2) + Cos(deg2rad * latitude1) * Cos(deg2rad * latitude2) * Sin(dLon / 2) * Sin(dLon / 2)  
c = 2 * WorksheetFunction.Asin(Sqr(a))  

d = earth_radius * c  

getDistance = d  

End Function

There will be a new custom getDistance function (unit = kilometer) available in your spreadsheet which accepts four parameters, i.e. the two pairs of coordinates, as follow:

getDistance(latitude1, longitude1, latitude2, longitude2)

where latitude1, longitude1, latitude2, longitude2 should be replaced by their relative cell references.

enter image description here

В Excel это выглядит немного не так: обычно диапазон таблицы и ссылки на таблицу совпадают :)

Задачу можно решить одной формулой. Для этого нужно задать диапазоны и объяснить табличному процессору, что делать с данными.

В Excel, кроме обычных формул, есть понятие «формула массива» — формула, ввод которой должен быть обязательно завершен нажатием Ctrl+Shift+Enter.
Формулы массива не следует сравнивать со всеми формулами, обрабатывающими массивы данных. Это разные понятия.

Формула массива для строки 2 (получить минимальное расстояние):

=МИН(ACOS(SIN(C2)*SIN($F$2:$F$3)+COS(C2)*COS($F$2:$F$3)*COS(B2-$E$2:$E$3))*6371210)

Находясь в строке формул, нажать «комбинацию из трех пальцев», указанную ранее. Формула должна заключаться в фигурные скобки — {}. Все. Готово.

После ввода формулы ячейку можно копировать по строкам (протянуть вниз).

Формула находит количество значений, равное количеству ячеек в диапазоне, и показывает минимальное.

Получить имя остановки:

=ИНДЕКС($D$2:$D$3;ПОИСКПОЗ(МИН(ACOS(SIN(C2)*SIN($F$2:$F$3)+COS(C2)*COS($F$2:$F$3)*COS(B2-$E$2:$E$3))*6371210);ACOS(SIN(C2)*SIN($F$2:$F$3)+COS(C2)*COS($F$2:$F$3)*COS(B2-$E$2:$E$3))*6371210;))

Недостаток формул массива и обрабатывающих массивы данных: формулы тяжелы в обработке, производится много лишних вычислений, при большом количестве таких конструкций возможны торможения при вычислениях.

Формулы массива можно облегчить: добавить дополнительные столбцы (строки) с формулами, в которых будет производиться часть вычислений. Это намного упрощает вычисления.

Понравилась статья? Поделить с друзьями:
  • Расстояние между двумя точками на плоскости excel
  • Рассчитать процент изменения цены в excel
  • Расстояние между датами excel
  • Рассчитать прогрессию в excel
  • Расстояние между графиками excel