Excel Koordinatlar Arası Mesafe Hesaplama

  • Konuyu başlatan Konuyu başlatan menfis
  • Başlangıç tarihi Başlangıç tarihi
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
28 Tem 2022
Mesajlar
17
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba ,

Forum içinde bir çok hesaplama var fakat kendi istediğime bir türlü uyarlayamadım .
Bende Türkiyenin çeşitli yerlerinde bulunan 200 adet koordinatım var . (sabit)
Sürekli yerleri değişen 10 ile 20 bin arasında da müşteri .
Bu 200 adet sabit koordinata en yakın müşterilerin atamasını yapmak istiyorum fakat bulamadım yardımcı olabilecek var mı ?
 
Çözüm
Sayın menfis,

Sayın leguminosea'nin müsadeleriyle, kendisinin eklediği son örnek belgedeki
veri/sayfa yapısına göre kullanılmak ve işlem süresini kısaltmak üzere alternatif bir öneride bulunayım.

HESAP sayfası kullanılmaz, 20.000 müşteri ve 2.000 sabit konum için işlem süresi 18-20 saniye.

VBA:
Option Explicit

Sub EN_YAKIN_KOORDINAT_BRN()
Dim X, b As Double: Dim d, mn, m, s As Integer: Dim ss, mm As Variant: Dim z As Single
X = (Application.PI()) / 180: z = Timer: d = 6371.1
mm = Sheets("MÜŞTERİ").Range("E3:F" & Sheets("MÜŞTERİ").Cells(Rows.Count, "E").End(3).Row).Value2
Sheets("MÜŞTERİ").[G3].Resize(UBound(mm), 3).ClearContents
ss = Sheets("SABİTLER").Range("A3:D" & Sheets("SABİTLER").Cells(Rows.Count, "A").End(3).Row).Value2
ReDim...
Hocam bu formülü 200 sabit koordinatı 15 000 koordinat ile karşılaştırma yapabilme şansımız var mı ? 2,5 KM de 150 mt civarı sapma yapıyor o önemli değil benim için de yeterli bir miktar .

Örneğin 15 Bin koordinatta d-e-f sütunlarına bu formülü koyacağım ve hepsini bulacak şekilde
 
Dosyanız ektedir.
20.000 müşteri ve 200 sabit nokta için hazırlandı.
Yavaş ve Hızlı hesaplama kodları eklendi.
Birleşik Koordinattan veri alma sağlandı.
Hesap Sayfasına koşullu biçimlendirme eklendi.
Müşteri sayfasında ad soyad tek sütuna alındı ve tel no eklendi.
 

Ekli dosyalar

Muhteşemsiniz gerçekten . Çok çok çok iyi olmuş . Rahatlıkla düzenleyebiliyor ve oynayabiliyorum da . Gerçekten çok çok teşekkür ederim emeğinize elinize sağlık .

Yönetime kahve ısmarlayınca size de geliyor mu ? Ufakta olsa bir katkım olsun isterim .
 
Sayın menfis,
-- Forumumuzun hoş özelliklerinden biri olan kahve / çay ikramının yönetimle bir ilgilisi yok, tümüyle ısmarlanan kişiye yöneliktir.
-- Forumumuzun devamlılığını sağlamak üzere maddi destekte bulunmak için VIP üyelik satın alabilirsiniz,
-- Üyelerimizin asıl katkısi ise; forumumuzda mümkün olduğunca sık ve uzun süreli çevrimiçi olmalarıı,
etraflarındaki Ms.Excel kullanıcılarını forumumuzdan haberdar edip, üye olmalarını salık vermeleridir.

İyi çalışmalar dileriz.
 
Sayın menfis,

Sayın leguminosea'nin müsadeleriyle, kendisinin eklediği son örnek belgedeki
veri/sayfa yapısına göre kullanılmak ve işlem süresini kısaltmak üzere alternatif bir öneride bulunayım.

HESAP sayfası kullanılmaz, 20.000 müşteri ve 2.000 sabit konum için işlem süresi 18-20 saniye.

VBA:
Option Explicit

Sub EN_YAKIN_KOORDINAT_BRN()
Dim X, b As Double: Dim d, mn, m, s As Integer: Dim ss, mm As Variant: Dim z As Single
X = (Application.PI()) / 180: z = Timer: d = 6371.1
mm = Sheets("MÜŞTERİ").Range("E3:F" & Sheets("MÜŞTERİ").Cells(Rows.Count, "E").End(3).Row).Value2
Sheets("MÜŞTERİ").[G3].Resize(UBound(mm), 3).ClearContents
ss = Sheets("SABİTLER").Range("A3:D" & Sheets("SABİTLER").Cells(Rows.Count, "A").End(3).Row).Value2
ReDim snc(1 To UBound(mm), 1 To 3)
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
For m = 1 To UBound(mm)
    mn = d
    For s = 1 To UBound(ss)
        b = Application.Acos(Sin(mm(m, 1) * X) * Sin(ss(s, 3) * X) + Cos(mm(m, 1) * X) * Cos(ss(s, 3) * X) * Cos(ss(s, 4) * X - mm(m, 2) * X)) * d
        If b < mn Then: mn = b: snc(m, 1) = ss(s, 1): snc(m, 2) = ss(s, 2): snc(m, 3) = mn
    Next: Next
Sheets("MÜŞTERİ").[G3].Resize(UBound(mm), 3) = snc
Erase mm: Erase ss: Erase snc
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "İşlem süresi: " & Format(Timer - z, "0.00") & " saniye.", vbInformation, "::.. Ömer BARAN ..::"
End Sub
 
Çözüm
Sn. leguminosea ve sn. Ömer BARAN Hocam;
Koordinatlar (Enlem,Boylam) ayrı sutunlarda değilde aynı sutunda olmuş olsa, bu hesaplama yapılabilir miydi?

örnek koordinatlar
41.04454, 28.64881
40.99826860, 28.7046918
41.01726120, 28.6428461
41.08821450, 28.8816874
41.0975770, 28.76306499
41.1006160, 28.894613
 
Sn. leguminosea, verdiğiniz linkdeki dosyayı inceledim, ancak bem buradaki gibi sabitlerde bulunan koordinata en yakıt koordinatları enlem boylam tek sutunda olduğu halde buldurabilirmiyiz, bunu merak etmiştim.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Benzer Konular Popüler İçerikler Daha Fazlası
Geri
Üst Alt