В этом учебном материале по Excel мы рассмотрим примеры того, как рассчитать расстояние между двумя точками на координатной плоскости.
Основная формула
=КОРЕНЬ((x2—x1)^2+(y2—y1)^2) |
Описание
Чтобы вычислить длину отрезка по координатам двух точек на линии, вы можете использовать формулу расстояния, адаптированную для синтаксиса формул Excel. В показанном примере формула в G5, имеет следующий вид:
=КОРЕНЬ((D5—B5)^2+(E5—C5)^2) |
где координаты двух точек указаны в столбцах с B по E.
Пояснение
Длину линии можно рассчитать по формуле расстояния, которая выглядит так:
Расстояние — это квадратный корень из изменения x
в квадрате плюс изменение y
в квадрате, где две точки даны в форме (x1, y1) и (x2, y2).
Формула расстояния — это пример примененной теоремы Пифагора, где изменение x
и изменение y
соответствуют двум сторонам прямоугольного треугольника, а гипотенуза — вычисляемому расстоянию.
В Excel формулу расстояния можно записать с помощью оператора экспоненты ^
и функции КОРЕНЬ следующим образом:
=КОРЕНЬ((D5—B5)^2+(E5—C5)^2) |
В соответствии с порядком операций Excel, изменение x
и изменение y
вычисляется, затем возводится в квадрат, и два результата складываются вместе и передаются в функцию КОРЕНЬ, которая возвращает квадратный корень из суммы в качестве окончательного результата:
=КОРЕНЬ((D5—B5)^2+(E5—C5)^2) =КОРЕНЬ((6)^2+(8)^2) =КОРЕНЬ(36+64) =КОРЕНЬ(100) =10 |
Функцию СТЕПЕНЬ также можно использовать вместо оператора экспоненты ^
следующим образом:
=КОРЕНЬ(СТЕПЕНЬ(D5—B5;2)+СТЕПЕНЬ(E5—C5;2)) |
с тем же результатом.
Здравствуйте. Подскажите, пожалуйста, есть ли в арсенале EXCEL функция, которая может выдать расстояние между двумя точками если на вход ей подаются координаты этих точек? |
|
{quote}{login=Сергей123}{date=02.05.2008 09:30}{thema=определение расстояния между 2 точками по координатам}{post}Здравствуйте. Подскажите, пожалуйста, есть ли в арсенале EXCEL функция, которая может выдать расстояние между двумя точками если на вход ей подаются координаты этих точек?{/post}{/quote} |
|
Sh_Alex Пользователь Сообщений: 732 |
{quote}{login=Сергей123}{date=02.05.2008 09:30}{thema=определение расстояния между 2 точками по координатам}{post}Здравствуйте. Подскажите, пожалуйста, есть ли в арсенале EXCEL функция, которая может выдать расстояние между двумя точками если на вход ей подаются координаты этих точек?{/post}{/quote} В Excel нет такой функции, но можно создать пользовательские. Я, как геодезист, предлагаю несколько, в том числе и нужную Вам. |
Sh_Alex Пользователь Сообщений: 732 |
Не прекрепился файл, пробую еще раз. |
Sh_Alex Пользователь Сообщений: 732 |
{quote}{login=Sh_Alex}{date=03.05.2008 10:03}{thema=определение расстояния между 2 точками по координатам}{post}Не прекрепился файл, пробую еще раз. |
Видать файлу оооочень не хочется сюда… |
|
{quote}{login=}{date=03.05.2008 11:15}{thema=}{post}Видать файлу оооочень не хочется сюда… |
|
Сергей, уже дважды было сказано — нет такой функции. Спроси в третий раз. Может найдется. |
|
{quote}{login=}{date=03.05.2008 09:38}{thema=}{post}Сергей, уже дважды было сказано — нет такой функции. Спроси в третий раз. Может найдется.{/post}{/quote} Мы не гордые.Можем унизится пару раз. Спрашиваю в 3 раз. Есть ли возможность вызывать в Excel функции написанные не в Excel? Краем уха (так как я чайник в этом деле) слышал что это как то с DLL связано. Александр, надеюсь что у вас все таки получится. |
|
Serge Пользователь Сообщений: 11308 |
{post}{quote}{login=Сергей123}Мы не гордые.Можем унизится пару раз. Спрашиваю в 3 раз.{/post}{/quote} Тёзка, ты что, издеваешься?! или написать свою библиотеку, думаешь проще?! ;-)))) |
Sh_Alex Пользователь Сообщений: 732 |
Еще попытка. |
Guest Гость |
#12 04.05.2008 12:51:42 Хочу поблагодарить Sh_Alex. Спасибо. =КОРЕНЬ((X1-X2)^2+(Y1-Y2)^2) подставить смогу, я уже выяснил эту формулу.Мне в коде VBA нужна была функция. |
I’m currently drawing up a mock database schema with two tables: Booking
and Waypoint
.
- Booking stores the taxi booking information.
- 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.
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.
В 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;))
Недостаток формул массива и обрабатывающих массивы данных: формулы тяжелы в обработке, производится много лишних вычислений, при большом количестве таких конструкций возможны торможения при вычислениях.
Формулы массива можно облегчить: добавить дополнительные столбцы (строки) с формулами, в которых будет производиться часть вычислений. Это намного упрощает вычисления.