商圏レポートを作る CSVで試す
タスデータ › コラム › 緯度経度から距離を計算する方法

緯度経度から2地点間の距離を計算する方法 — Excelの式と、一番近い拠点・半径◯km以内を出す手順

2026年7月24日 / 最終更新 2026年11月4日

「拠点から顧客先まで何kmあるか」「顧客ごとに一番近い店舗はどこか」。2地点の緯度経度が分かっていれば、Excelの関数だけでこの距離を計算できます。この記事では、まず2地点の距離を出す式を紹介し、そのあと顧客と複数の拠点を並べた表に広げて、一番近い拠点と半径◯km以内の件数を出すところまでを、例の表で順に説明します。

2地点の距離は、Excelの式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関数で度数法をラジアンに変換し、球面上の角度から距離を求めています。

追加のアドインや外部サービスは要りません。

結果がGoogleマップと違って見えるのは「直線」だから

この式で出るのは、あくまで2点を地図上で一直線に結んだときの直線距離です。Googleマップなどのナビが表示する距離は、実際の道路を通った道のり距離で、これとは別の指標になります。

「営業エリアを大まかに絞る」「候補地を距離順に並べ替える」といった用途なら、直線距離で足ります。「訪問の所要時間を見積もりたい」など、実際の移動を伴う判断には、道のり距離のほうが実感に近くなります。

例に使う表

例として、拠点を3か所(東京駅・新宿駅・横浜駅)、顧客を5件(渋谷駅・上野駅・品川駅・川崎駅・池袋駅の位置にいるものとします)置いた表を使います。緯度経度は、国土地理院の地名検索で得た各駅の値を小数第4位に丸めたものです。

拠点は横に並べ、1行目に名前、2行目に緯度、3行目に経度を入れます。顧客は縦に並べ、A列に名前、B列に緯度、C列に経度を入れます。色の付いたE4〜G8が、これから距離を入れていく範囲です。

ABCDEFG
1拠点名東京駅新宿駅横浜駅
2拠点の緯度35.681335.688235.4656
3顧客緯度経度拠点の経度139.7662139.6988139.6201
4渋谷駅35.6588139.7029
5上野駅35.7112139.7770
6品川駅35.6281139.7359
7川崎駅35.5310139.6971
8池袋駅35.7332139.7078

このあとH列に「一番近い拠点までの距離」、I列に「一番近い拠点の名前」、J列に「5km以内かどうか」を足していきます。

1つの拠点と、顧客リスト全体の距離を出す

はじめに紹介した式は、2地点の緯度経度がB2・C2とB3・C3に入っている前提でした。

この式をそのまま下の行へコピーすると、参照しているセルが4つとも1行ずつ下へずれます。顧客の側はずれてほしく、拠点の側は動いてほしくありません。そこで、拠点のセルだけ列と行の前に$を付けて固定します(絶対参照)。

東京駅(E2・E3)と各顧客の距離を出す場合、E4に次の式を入れます。

=6371*ACOS(COS(RADIANS(B4))*COS(RADIANS($E$2))*COS(RADIANS($E$3)-RADIANS(C4))+SIN(RADIANS(B4))*SIN(RADIANS($E$2)))

元の式との対応は、B2が顧客の緯度(B4)、C2が顧客の経度(C4)、B3が拠点の緯度($E$2)、C3が拠点の経度($E$3)です。E4をE5〜E8へコピーすると、B4・C4だけがB5・C5、B6・C6…と変わり、$E$2と$E$3はそのまま残ります。結果は次の通りです(表示は小数第2位で四捨五入)。

セル顧客東京駅までの距離(km)
E4渋谷駅6.24
E5上野駅3.46
E6品川駅6.52
E7川崎駅17.84
E8池袋駅7.82

COS関数とSIN関数は、角度をラジアンで受け取ります。Microsoftサポートにも、COS関数について「角度はラジアン単位で指定する必要があります」と書かれています。緯度経度は度の単位なので、式の中でRADIANS関数を通してから渡しています。RADIANSを外すと、正しい距離とは違う数字になります。

拠点が1か所だけなら、ここまでで作業は終わりです。

複数の拠点との距離表を、式1つのコピーで作る

拠点が複数あるときは、上の式を右のF列・G列にもコピーしたくなります。ところが$E$2と$E$3は列も固定しているので、右へコピーしても東京駅を指したままです。

そこで$を付ける場所を片側だけにします(複合参照)。

E4の式を次のように書き換えます。

=6371*ACOS(COS(RADIANS($B4))*COS(RADIANS(E$2))*COS(RADIANS(E$3)-RADIANS($C4))+SIN(RADIANS($B4))*SIN(RADIANS(E$2)))

このE4を、E4〜G8の範囲全体にコピーします。たとえば右下のG8は、参照が$B8・$C8(池袋駅)とG$2・G$3(横浜駅)に変わります。15個のセルすべてに同じ形の式が入り、距離表ができあがります。

AEFG
1東京駅新宿駅横浜駅
4渋谷駅6.243.2922.75
5上野駅3.467.5130.77
6品川駅6.527.4820.89
7川崎駅17.8417.4810.07
8池袋駅7.825.0730.79

拠点が増えたときは、G列の右に列を足して1〜3行目に名前・緯度・経度を入れ、同じ式をコピーします。このあと使うH〜J列は、その分だけ右へずれます。顧客が増えたときは、行を足して同じ式を下へコピーします。

出てきた数字の確かめ方

式の写し間違いは、信頼できる別の計算と1組だけ突き合わせると見つけられます。国土地理院の測量計算サイトには「距離と方位角の計算」があり、2点の緯度経度から距離(測地線長)と方位角を返します。

この計算は地球を楕円体として扱うので、地球を半径6371kmの球とみなすエクセルの式とは、数字が少しだけ違います。渋谷駅から新宿駅の例では、エクセルの式が3.290km、測量計算サイト(楕円体はGRS80)が3,283.068mで、差は約7mです。上の表の15組すべてを突き合わせた結果、差は最大で約58m、割合ではどの組も0.3%未満でした。桁が違う、何倍もずれている、という場合は式か緯度経度の入力に誤りがあります。

一番近い拠点までの距離と、その拠点名を取り出す

距離表ができれば、顧客ごとの「一番近い拠点」は、その行の最小値と、最小値がある列の見出しです。

最小の距離(H列)

H4に次の式を入れ、H8までコピーします。

=MIN(E4:G4)

MIN関数は、指定した範囲の中で一番小さい数値を返します。E4:G4はその顧客の行に並んだ3つの拠点までの距離なので、行内で一番小さい距離が返ります。

その拠点の名前(I列)

I4に次の式を入れ、I8までコピーします。

=INDEX($E$1:$G$1,1,MATCH(H4,E4:G4,0))

内側のMATCH関数は、H4の値(最小の距離)がE4:G4の左から何番目にあるかを返します。3つ目の引数の0は「完全に一致する最初の値を探す」という指定です。外側のINDEX関数はINDEX(配列, 行番号, 列番号)の形で、拠点名の並び($E$1:$G$1)の1行目・その番号の列にある値を返します。拠点名の範囲は、下へコピーしても動かないように$で固定しています。

INDEX関数はMicrosoft 365・Excel 2024・2021・2019・2016で使えます。

AEFGHI
3顧客(東京駅)(新宿駅)(横浜駅)最寄りの距離最寄りの拠点
4渋谷駅6.243.2922.753.29新宿駅
5上野駅3.467.5130.773.46東京駅
6品川駅6.527.4820.896.52東京駅
7川崎駅17.8417.4810.0710.07横浜駅
8池袋駅7.825.0730.795.07新宿駅

読み取るときの注意が2つあります。

半径◯km以内の顧客を数える・印を付ける

距離表とH列があれば、「半径5km以内」は「5以下」という条件に置き換えられます。数え方は目的によって3通りあります。

拠点ごとに、5km以内の顧客数を数える

東京駅の列(E4:E8)のうち5以下のセルを数える式です。E10に入れて、F10・G10へコピーします。

=COUNTIFS(E4:E8,"<=5")

結果は東京駅が1件(上野駅)、新宿駅が1件(渋谷駅)、横浜駅が0件です。条件を"<=10"に変えると、東京駅4件・新宿駅4件・横浜駅0件になります。池袋駅は新宿駅から5.07kmなので、5km以内には入りません。

この数え方では、2つの拠点のどちらからも5km以内にいる顧客は、両方の拠点で1件ずつ数えられます。拠点ごとの件数を足しても、顧客の実数にはなりません。

「一番近い拠点がここで、かつ5km以内」を数える

顧客を拠点に重複なく割り振って数えたいときは、条件を2組にします。COUNTIFS関数は、すべての条件を満たした行だけを数えます。

=COUNTIFS(I4:I8,"東京駅",H4:H8,"<=5")

結果は1件(上野駅)です。"東京駅"を"新宿駅"に変えると1件(渋谷駅)、"横浜駅"に変えると0件です。条件に使う2つの範囲(I4:I8とH4:H8)は、同じ行数・列数にそろえる必要があります。

COUNTIFS関数はMicrosoft 365・Excel 2024・2021・2019・2016で使えます。

該当する顧客に印を付ける

件数ではなく「どの顧客が該当するか」を知りたいときは、J4に次の式を入れてJ8までコピーします。

=H4<=5

最寄りの拠点までの距離が5km以内ならTRUE、そうでなければFALSEが入ります。例の表では、渋谷駅と上野駅がTRUE、品川駅・川崎駅・池袋駅がFALSEです。J列がTRUEの行が、いずれかの拠点から5km以内にいる顧客の一覧になります。

どの拠点からも5km以内に入らない顧客の件数は、次の式で数えられます。例の表では3件です。

=COUNTIFS(H4:H8,">5")

件数が増えたときに起きること

式の数は「顧客数×拠点数」で増える

距離表のセルの数は、顧客数と拠点数の掛け算です。1つのセルの式には、RADIANSが6回、COSが3回、SINが2回、ACOSが1回、合わせて12回の関数が入っています。

顧客数拠点数距離の式の数距離表の列の範囲
5件3か所15個E〜G列
300件5か所1,500個E〜I列
1,000件20か所20,000個E〜X列
10,000件50か所500,000個E〜BB列

顧客が数百件・拠点が数か所の規模なら、この記事の方法で十分です。式の数は数千個で、作業の中身は5件×3拠点の例と変わりません。式を1つ書いて、コピーする範囲が広がるだけです。

拠点が数十か所になると、表が横に長くなります。50か所なら距離表はE列からBB列までになり、H列・I列に置いていた式は距離表の右側に移して、範囲をE4:BB4のように書き換える形になります。式の数も50万個になり、1つのブックに入れる計算の量が、例の表の3万倍を超えます。

長い式に名前を付けて短くする(Microsoft 365・Excel 2024)

距離の式は長く、セルごとに同じものが入ります。LAMBDA関数を使うと、この式に名前を付けて、自作の関数として呼び出せます。LAMBDA関数の適用先はExcel for Microsoft 365とExcel 2024(どちらもMac版を含む)で、Excel 2021は入っていません。

Windows版の手順は次の通りです。

  1. 「数式」→「名前の管理」→「新規」を選ぶ(Mac版は「数式」→「名前の定義」)
  2. 「新しい名前」ダイアログの「名前」に関数名を入れる。ここではKYORIとする
  3. 「参照先」に下のLAMBDA式を入れ、「OK」→「閉じる」の順に押す
=LAMBDA(ido_a,keido_a,ido_b,keido_b,6371*ACOS(COS(RADIANS(ido_a))*COS(RADIANS(ido_b))*COS(RADIANS(keido_b)-RADIANS(keido_a))+SIN(RADIANS(ido_a))*SIN(RADIANS(ido_b))))
ido_a・keido_aが1地点目の緯度・経度、ido_b・keido_bが2地点目の緯度・経度です。

登録すると、そのブックの中ではもとからある関数と同じように呼び出せます。距離表のE4の式は、次の1行に置き換わります。$の付け方は距離表のときと同じです。

=KYORI($B4,$C4,E$2,E$3)

計算の中身は同じなので、結果も距離表と同じ数字になります。短くなるのは式の見た目で、式の数そのものは減りません。

緯度経度がまだないとき

実務でよくあるのは、手元にあるのが緯度経度ではなく住所だけというケースです。距離の計算式そのものは1行で済んでも、その前段として「住所を緯度経度に変換する」工程(ジオコーディング)が必要になります。

タスデータでは、住所の入ったCSVをアップロードすると、緯度経度・最寄り駅・市区町村コードなどの列が元の表の右側に追加されて返ります。返ってきた表の緯度と経度の列を例の表のB列・C列に当てはめると、上の式がそのまま使えます。住所から緯度経度に変える方法の全体は、住所を緯度経度に一括変換する方法で整理しています。

住所リストに緯度経度を一括で付けられます。
距離計算の土台になる緯度経度を、まとめて用意できます。最寄り駅と、そこまでの直線距離(m)も列で付くので、「駅から何mか」を知りたいだけなら式もいりません。会員登録すると、Excelやcsvの住所の一覧をそのまま読み込めます。

登録なしで、手元の住所リストを試す →

まとめ

関連記事・ツール
📕 このテーマの全体像:住所データ整備 完全ガイド
住所から最寄り駅を調べる方法
営業エリアの分け方
Googleマップで半径の円を描く方法
住所を緯度経度に一括変換する方法
住所から緯度経度がわかる仕組み(ジオコーディング入門)
住所1つで商圏レポートを作る(無料)