7 votos

¿Cómo se calcula la distancia con Excel?

¿Existe una forma (preferiblemente en Excel) de calcular la distancia (basada en lat, lon) entre dos listas de puntos?

Mi objetivo final sería, por ejemplo, tener una lista de Starbucks y otra de McDonald's, y luego mostrar el vecino más cercano, por así decirlo.

0 votos

Busco la distancia mínima.

0 votos

¿Por qué unet, devolverá la distancia?

0 votos

@Jeed Cualquier unidad estaría bien, probablemente millas en este caso.

16voto

Nikola Puntos 21

Dada una lista de pares de coordenadas geográficas, se puede implementar la función Fórmula Haversine directamente en Excel.


La forma más sencilla de utilizar esta fórmula (o una más precisa, pero creo que no es tu caso) consiste en pulsar Alt+F11 para abrir el Editor VBA, haga clic en Insert --> Module y luego (copiar y) pegar, por ejemplo, el código amablemente sugerido por 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

Habrá una nueva costumbre getDistance (unidad = kilómetro) disponible en su hoja de cálculo que acepta cuatro parámetros, es decir, los dos pares de coordenadas, como sigue:

getDistance(latitude1, longitude1, latitude2, longitude2)

donde latitude1, longitude1, latitude2, longitude2 deben ser sustituidos por sus referencias relativas a las celdas.

enter image description here

3 votos

Enlace directo: codecodex.com/wiki/

0 votos

@blah238 Gracias por tu sugerencia. He añadido un pequeño tutorial para que funcione.

1 votos

@afalciano Gracias por el paseo y el código. Mi pregunta es, sin embargo, ¿cuáles son las unidades finales de esta ecuación?

3voto

xenny Puntos 670

Una forma más precisa es utilizar Vicenty's fórmula. Se basa en un elipsoide en lugar de una esfera. Sin embargo, la respuesta anterior servirá si trabajas en una ciudad (las diferencias se pueden despreciar en tu caso). He encontrado un código excel vb aquí por si acaso.

Ten en cuenta que si trabajas en una ciudad, utilizar las distancias de "vuelo de pájaro" podría ser engañoso. Sería mejor utilizar las distancias de la red. Una solución de compromiso es utilizar la "distancia de Manhattan"

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X