Excelで2地点間の距離を計算する方法 — 緯度経度から関数1本で出す式と、その限界
「拠点から顧客先まで何kmあるか」「営業所とエリア候補地の距離を一覧で出したい」——住所ではなく緯度経度さえ分かっていれば、Excelの関数だけでこの距離を計算できます。この記事では、まず関数1本で出せる式をそのまま紹介し、そのうえで結果が地図アプリと違って見える理由や、件数が増えたときの壁までを整理します。
緯度経度が分かっていれば、関数1本で出せる
2地点の緯度・経度がそれぞれ分かっているとき、地球を球体とみなして2点間の直線距離を求める式(球面三角法)は次のとおりです。A地点の緯度経度をB2(緯度)C2(経度)、B地点をB3(緯度)C3(経度)とすると、距離(km)はこう書けます。
=6371*ACOS(COS(RADIANS(B2))*COS(RADIANS(B3))*COS(RADIANS(C3)-RADIANS(C2))+SIN(RADIANS(B2))*SIN(RADIANS(B3)))6371は地球の半径(km)。RADIANS関数で度数法をラジアンに変換し、球面上の角度から距離を求めています。
この式をそのままセルに入れれば、拠点と顧客先を1行ずつ並べた表に対して、コピー1つで全行の距離を出せます。追加のアドインや外部サービスは不要です。
結果がGoogleマップと違って見えるのは「直線」だから
この式で出るのは、あくまで2点を地図上で一直線に結んだときの直線距離です。Googleマップなどのナビが表示する距離は、実際の道路を通った道のり距離で、これとは別の指標になります。
- 直線距離は、川や山、道路の曲がりを無視して2点を結ぶため、道のり距離よりおおむね短く出ます
- 市街地で碁盤目状に道が通っている場所ほど、直線距離と道のり距離の差は大きくなりやすい傾向があります
- 逆に、幹線道路が2点をほぼ最短で結んでいる場所では、差は小さくなります
「営業エリアを大まかに絞る」「候補地を距離順に並べ替える」といった用途であれば、直線距離でも十分に使えることが多いようです。一方で「訪問の所要時間を見積もりたい」など、実際の移動を伴う判断には、道のり距離のほうが実感に近くなります。
手元に緯度経度がある数十件なら、これで十分
拠点1〜数か所と、顧客先が数十件程度で、すでに緯度経度が手元にあるなら、上の式をコピーするだけで完結します。無理に自動化する必要はありません。
壁になるのは「緯度経度がまだない」とき
実務でよくあるのは、手元にあるのが緯度経度ではなく住所だけというケースです。距離の計算式そのものは1行で済んでも、その前段として「住所を緯度経度に変換する」工程(ジオコーディング)が必要になります。
- 数件なら、地図で1件ずつ座標を調べて手入力する方法でも足ります
- 拠点1か所×顧客リスト数百件を総当たりで比較したい、あるいは複数拠点との距離を一覧化したいといった場合は、住所を一括で緯度経度に変換してから距離式を当てはめる流れのほうが現実的です
タスデータは、住所リストをアップロードすると緯度経度や最寄り駅などを一括で付与できます。緯度経度さえ揃えば、あとは上の距離式(あるいは商圏の範囲指定)で拠点との距離を見ていけます。
住所リストに緯度経度を一括で付けられます。
メール登録だけ・月100行まで無料。距離計算の土台となる緯度経度を、まとめて用意できます。
まとめ
緯度経度さえ分かっていれば、2地点間の距離はExcel関数1本(球面三角法)で計算できます。ただし出てくるのは道路を通らない直線距離で、Googleマップの道のり距離とは別物という点は押さえておきたいところです。住所しか手元にない場合は、先に緯度経度へ変換する工程が要る、というのがこの計算の実務上の分かれ目だと思います。