Найти расстояние от точки до точки в 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 нужна была функция.

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;))

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

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

You might think «as the crow flies» distance is nothing more than a simple hypotenuse calculation back from geometry class. Unfortunately, not. You should work with either decimal degrees or degree-minute-second (DMS) notation due to the curvy structure of Earth. This means a lot of formulas to deal with.

Also, you need coordinates (latitude/longitude) of each city you want to put in a calculation.

Thankfully, we have workarounds for both problems. In this article, we are going to show how to calculate as-the-crow-flies distance between two cities in Excel with help of LAMBDA function and data types.

Download Workbook

The formula of calculating distance by longitude and latitude

In our example, we are using the great-circle distance method which uses the shortest path, also known as, as the crow flies, between two points corresponding to an arc linking two points on a sphere. The method uses Spherical law of cosines a theorem relating the sides and angles of spherical triangles.

where

  • φ: Latitude (radian)
  • λ: Longitude (radian)
  • R: Radius of the earth

The coordinates are represented in two forms:

  • As a string including degree, minute and second
  • As a numerical value of decimal degrees

Converting degrees, minutes and seconds to decimal degrees:

Decimal Degrees = Degrees + (Minutes + Seconds / 60) / 60

Converting decimal degrees to radians:

Radians = Decimal Degrees * PI / 180

Because deg-min-sec notation will make things more confusing, we will use decimal degrees going forward. This is the Excel formula for decimal degrees:

ACOS(
   SIN(Place1_Lat * PI() / 180) *
   SIN(Place2_Lat * PI() / 180) +
   COS(Place1_Lat * PI() / 180) *
   COS(Place2_Lat * PI() / 180) *
   COS(Place2_Lon * PI() / 180 - Place1_Lon * PI() / 180)
) * EarthRadius

Obviously, no one wants to deal with this kind of formula more than one time. Instead, you can use the LAMBDA function to define this formula once in a named range and use the named range like a UDF (user-defined function). Let’s see what the LAMBDA function is and how you can use it.

LAMBDA Function

The LAMBDA function is a game changer feature that allows you to create your own functions without any VBA, macro, or JavaScript knowledge. Since its unique nature, the function has a unique use case.

  • A LAMBDA formula should be written in a named range. That named range’s name will be your custom function’s name.
  • You need to type parameter names before the function itself. Such as, a and b are the parameters and the latter operation is the function itself: =LAMBDA(a, b, a-b)
  • LAMBDA functions can be called recursively.

LAMBDA([parameter1, parameter2, …,] calculation)

For detailed information, please visit the following page: Excel LAMBDA Function

The LAMBDA function requires a Microsoft 365 subscription.

Calculating distance by longitude and latitude with LAMBDA Function

Let’s create our custom function as described above. The distance formula needs 4 arguments, if we use a static value for the radius of earth, e.g., 6,371 km.

=LAMBDA(Place1_Lat, Place1_Lon, Place2_Lat, Place2_Lon,
    ACOS(
        SIN(Place1_Lat * PI() / 180) * SIN(Place2_Lat * PI() / 180) +
            COS(Place1_Lat * PI() / 180) * COS(Place2_Lat * PI() / 180) *
                COS(Place2_Lon * PI() / 180 - Place1_Lon * PI() / 180)
    ) * 6371
)

Once created, you can re-use your custom function anywhere in this workbook. Excel even displays IntelliSense box for this function.

Tip: You can use Excel’s RADIANS function instead of multiplying by PI() / 180.

=LAMBDA(Place1_Lat,Place1_Lon,Place2_Lat,Place2_Lon,ACOS(SIN(RADIANS(Place1_Lat))*SIN(RADIANS(Place2_Lat))+COS(RADIANS(Place1_Lat))*COS(RADIANS(Place2_Lat))*COS(RADIANS(Place2_Lon)-RADIANS(Place1_Lon)))*6371)

Data Types

Let us introduce you to an Excel feature called «Data Types». The Data Types feature allows pulling data dynamically from online sources. Geographical data like countries and cities are two of them. This feature will relieve you from gathering coordinate data beforehand.

Note: Data Types have been released to all Microsoft 365 subscribers on March 28, 2019. Thus, you need to be a Microsoft 365 subscriber to access this feature.

You can find the feature button under the Data tab of the Ribbon.

All you need to do is to select cells that contain a city name and click the Geography icon. You will see an icon will be added to city names.

Once added, you can see options like population, time zone, and more, including latitude and longitude by putting a dot (.) after the cell’s reference.

Since you can get lat/lon values from a single data-type cell why do you need four arguments in your custom function? You can simplify decrease your argument number to two like below:

=LAMBDA(City1, City2,
    ACOS(
        SIN(City1.Latitude * PI() / 180) *
            SIN(City2.Latitude * PI() / 180) +
            COS(City1.Latitude * PI() / 180) *
                COS(City2.Latitude * PI() / 180) *
                COS(
                    City1.Longitude * PI() / 180 -
                        City2.Longitude * PI() / 180
                )
    ) * 6371
) 

We named our formula «DistanceByCity»:

How to calculate as-the-crow-flies distance between two cities in Excel (7)

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