Thực hiện tính toán khoảng cách bằng Excel?


8

Có cách nào (tốt nhất là trong Excel) để tính khoảng cách (dựa trên lat, lon) giữa hai danh sách điểm không?

Ví dụ, mục tiêu cuối cùng của tôi là có một danh sách Starbucks và danh sách McDonald, và sau đó hiển thị người hàng xóm gần nhất, nếu bạn muốn.


Tôi đang tìm kiếm khoảng cách tối thiểu.
b-rad-b

Bởi unet, sẽ trả lại khoảng cách?
Jeed

@Jeed Bất kỳ đơn vị sẽ là tốt, có lẽ dặm trong trường hợp này.
b-rad-b

Câu trả lời:


16

Đưa ra một danh sách các cặp tọa độ địa lý, bạn có thể triển khai công thức Haversine trực tiếp trong Excel.


Cách đơn giản nhất để sử dụng công thức này (hoặc chính xác hơn, nhưng tôi nghĩ đó không phải là trường hợp của bạn) bao gồm nhấn Alt+F11để mở Trình chỉnh sửa VBA, nhấp Insert --> Modulevà sau đó (sao chép và) dán, ví dụ mã được đề xuất bởi 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

Sẽ có một getDistancehàm tùy chỉnh mới (đơn vị = km) có sẵn trong bảng tính của bạn, chấp nhận bốn tham số, tức là hai cặp tọa độ, như sau:

getDistance(latitude1, longitude1, latitude2, longitude2)

nơi latitude1, longitude1, latitude2, longitude2nên được thay thế bởi các tham chiếu ô tương đối của họ.

nhập mô tả hình ảnh ở đây


3
Liên kết trực tiếp: codecodex.com/wiki/ Kẻ
blah238

@ blah238 Cảm ơn lời đề nghị của bạn. Tôi đã thêm một hướng dẫn ngắn để làm cho nó hoạt động.
Antonio Falciano

1
@afalciano Cảm ơn bạn đã xem qua & code. Câu hỏi của tôi là các đơn vị cuối cùng từ phương trình này là gì? là mét?
Kerry

@Kerry Đó là cây số. Ngoài ra, trong đó công thức nói "Sqr" thì nó phải là "Sqrt".
ddunn801

Đơn vị đo khoảng cách là km, giống như bán kính Trái đất.
Antonio Falciano

3

Một cách chính xác hơn là sử dụng công thức của Vicenty . Nó dựa trên một hình elip thay vì hình cầu. Tuy nhiên, câu trả lời trước sẽ thực hiện công việc nếu bạn làm việc trong thành phố (sự khác biệt có thể bị bỏ qua trong trường hợp của bạn). Tôi đã tìm thấy một mã vb excel ở đây chỉ trong trường hợp.

Lưu ý rằng nếu bạn làm việc trong thành phố, sử dụng khoảng cách "chuyến bay của chim" có thể gây hiểu nhầm. Nó sẽ tốt hơn để sử dụng khoảng cách mạng. Một thỏa hiệp là sử dụng "khoảng cách Manhattan"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.