Страницы: 1
RSS
Поиск ближайшей точки по координатам
 
Добрый день. Имеется таблица.  В таблице имеются названия, у каждого из которых есть 2 критерия, долгота и широта. Нужно найти ближайшую точку по координатам, учитывая 2 критерия. То есть, вставить в столбец "Название Итог" значение найденной строки из столбца "Название", если критерий1 и критерий2 у двух сравниваемых строк одинаковый. Пробовал найти ближайшие через ближайшие координаты (не расстояние, а именно цифровой формат), но способ не дал тех результатов, которых я ожидал. Помогите с макросом.  
 
Непонятно, что должно получиться в результате? Покажите на Вашем примере Как есть - Как надо
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Hellmaster написал:
Нужно найти ближайшую точку по координатам
Если уж искать именно по координатам, то вот вариант:
 
Мартын, да. Все так. Спасибо
Изменено: Hellmaster - 07.08.2019 12:42:17
 
Все же, если есть возможность макросом это сделать, было бы очень круто. Как это должно выглядеть в виде макроса (примерно):

Код
Lastrow = Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row
  With ActiveSheet
    X = .Range("D2:D" & Lastrow).Value
    Y = .Range("E2:E" & Lastrow).Value
    Adr = .Range("C2:C" & Lastrow).Value
  End With
Set dicDist = CreateObject("Scripting.Dictionary")
ReDim Temp(1 To UBound(X))
  For i = 1 To UBound(X)
    For j = 1 To UBound(X)
      If Cells(i, 1) = Cells(j, 1) And Cells(i, 2) = Cells(j, 2) And i <> j Then
      'поиск ближайшего на карте значения (учитывая координаты долготу и широту)
      Cells(i, 6) = Cells(j, 3)
      End If
    Next
  Temp(i) = Adr(dicDist.Item(Application.Min(dicDist.Keys)), 1)
  dicDist.RemoveAll
  Next
Worksheets("Лист1").Range("F2").Resize(UBound(Temp)) = Application.Transpose(Temp)
Изменено: Hellmaster - 07.08.2019 14:12:40
 
Доброе время суток.
Цитата
Мартын написал:
Если уж искать именно по координатам, то вот вариант:
Коллега, всё же не совсем корректно считать по географическим координатам точно также как и для прямоугольных координат?
Для пары точек 50° 0' 0" широты, 0° 0' 0" долготы и 40° 0' 0" широты, 1° 0' 0" имеем расстояние 1114.699 километров
Для пары точек 50° 0' 0" широты, 0° 0' 0" долготы и 60° 0' 0" широты, 1° 1' 0" имеем расстояние 1113.806 километров
 
Цитата
Андрей VG написал:
не совсем корректно
Миль пардон, камрад! Голова в пепле, морда в слезах, только что осознал что Земля не плоская, грусть и печалька :(
Вот исправленный вариант:
 
Мартын,
оф топ
 
Добрый день, в продолжении темы требуется выделить точки по координатам, расположенные не далее 0,5 метров друг от друга и имеющие разницу высот более 0,1м.
Способ фильтрации по ближайших точек от Мартын на плоскости верен, но вот последующая фильтрация по критериям отбора для меня затруднена. Гуру прошу откликнуться  
Страницы: 1
Наверх