スプレッドシートで緯度・経度を度・分・秒(DMS)形式に変換する3つの方法|数式・カスタム関数・GASで簡単変換!

緯度・経度データを扱うとき、小数形式(例: 35.685085)では分かりづらいと感じたことはありませんか?

その場合、度・分・秒(DMS)形式(例: 35° 41′ 6.31″)に変換することで見やすくなり、地図や位置情報の確認が簡単になります。

この記事では、Googleスプレッドシートで緯度・経度を度・分・秒形式に変換する方法を 3つご紹介します。

  • 数式
  • カスタム関数
  • Google Apps Script (GAS)

目的やデータ量に応じて最適な方法をお使い分けください。

目次

緯度・経度を度・分・秒 形式に変換する方法の比較

方法特徴活用する場面
数式簡単に使える
セルごとに入力が必要
少量のデータを手早く変換したい場合
スクリプトを使いたくない場合
カスタム関数シンプルな数式で使える
セルごとに入力
複数シートで繰り返し使いたい場合
スクリプト大量データを一括で処理可能データ量が多く手動入力では非効率な場合
定期的に処理を自動化したい場合
DMS形式とは?

DMS形式(Degree, Minute, Second)は、緯度・経度を次のように表現する形式です:

  • 度(°):小数部分を切り捨てた整数
  • 分(′):小数部分を60倍して整数部分
  • 秒(″):分の小数部分をさらに60倍して取得

:

小数形式:35.685085

DMS形式:35° 41′ 6.31″

方法1: 数式を使ってDMS形式に変換

スプレッドシートの数式を使ってDMS形式に変換できます。

数式

緯度 (B2セルの場合)

=INT(B2) & "° " & INT((B2-INT(B2))*60) & "′ " & ROUND(((B2-INT(B2))*60-INT((B2-INT(B2))*60))*60, 2) & "″"

経度 (C2セルの場合)

=INT(C2) & "° " & INT((C2-INT(C2))*60) & "′ " & ROUND(((C2-INT(C2))*60-INT((C2-INT(C2))*60))*60, 2) & "″"
数式の説明

INT関数:指定した数値の小数点以下を切り捨てて、整数部分のみを返します。

  • INT(B2):度(°)を取得
  • (B2-INT(B2))*60:分(′)を取得
  • ((B2-INT(B2))*60-INT(...))*60:秒(″)を取得し、小数点以下2桁に丸める

方法2: カスタム関数を使って変換

カスタム関数を使うことで、スプレッドシートのセル内で直接DMS形式に変換できます。

カスタム関数の数式

緯度 (B2セルの場合)

=DMS(B2)

経度 (C2セルの場合)

=DMS(C2)

カスタム関数の設定

カスタム関数を使用するにあたり、以下の設定をします。

STEP
GASエディタを開く

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

STEP
GASスクリプトの作成

function myFunction(){

}

が最初から入っているため、消去して以下のスクリプトを貼り付けます。

function DMS(value) {
  const degrees = Math.floor(value); // 度
  const minutes = Math.floor((value - degrees) * 60); // 分
  const seconds = ((value - degrees) * 60 - minutes) * 60; // 秒
  return degrees + "° " + minutes + "′ " + seconds.toFixed(2) + "″";
}
スクリプトの説明
Math.floor(value)

小数点以下を切り捨てて度(°)を取得。

(value - degrees) * 60

小数部分を60倍して分(′)を取得。

(minutesの小数部分 * 60)

秒(″)を取得し、小数点以下2桁に丸めます。

STEP
スクリプトを保存

スクリプトを書いたら、名前を付けて保存します。

(例:「緯度経度(DMS形式)」)

STEP
スクリプトを実行

スクリプトを一度実行して権限を承認します。

初めてそのスクリプトを実行する場合は権限の確認が必要です。

そのため、『権限を確認』を押します。

許可の詳細手順

「詳細」をクリックします。

無題のプロジェクト(安全ではないページ)に移動」をクリックします。

許可」をクリックします。

設定が完了したら、セルにカスタム関数を入力して使用します。

方法3: Google Apps Scriptで一括変換

大量のデータを一括で変換する場合は、スクリプトを実行する方法が便利です。

このスクリプトは、B列(緯度)とC列(経度)のデータをDMS形式に変換し、D列E列 に出力します。

  • 元データ(B列、C列) はそのまま残ります。
  • D列:変換後の緯度(DMS形式)
  • E列:変換後の経度(DMS形式)

また、シート名を「緯度経度」としてスクリプト実行時に参照します、

GASの実行手順

STEP
GASエディタを開く

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

STEP
GASスクリプトの作成

function myFunction(){

}

が最初から入っているため、消去して以下のスクリプトを貼り付けます。

function convertToDMS() {
  // 特定のシートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("緯度経度");
  
  // シートが存在しない場合は処理を終了
  if (!sheet) {
    SpreadsheetApp.getUi().alert('「緯度経度」というシートが見つかりません。シート名を確認してください。');
    return;
  }
  
  // 緯度(B列)と経度(C列)のデータ範囲を指定 (2行目から最終行まで)
  const range = sheet.getRange(2, 2, sheet.getLastRow() - 1, 2); 
  const values = range.getValues();

  // D列とE列にDMS形式のデータを書き込む配列を作成
  const output = values.map(row => {
    const lat = row[0]; // 緯度
    const lng = row[1]; // 経度
    return [
      lat ? convert(lat) : "", // 緯度のDMS形式 (D列)
      lng ? convert(lng) : ""  // 経度のDMS形式 (E列)
    ];
  });

  // D列(4列目)とE列(5列目)に結果を書き込む
  sheet.getRange(2, 4, output.length, 2).setValues(output);
}

// 緯度・経度をDMS形式に変換する関数
function convert(value) {
  const degrees = Math.floor(value); // 度(°)
  const minutes = Math.floor((value - degrees) * 60); // 分(′)
  const seconds = ((value - degrees) * 60 - minutes) * 60; // 秒(″)
  return degrees + "° " + minutes + "′ " + seconds.toFixed(2) + "″";
}
スクリプトの説明
シートの取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("緯度経度");
  • シート名を指定して、そのシートを取得します。
  • シート名を変更する場合は'緯度経度' を実際のシート名(例: '住所リスト')に置き換えます。
シートのデータ取得
const range = sheet.getRange(2, 2, sheet.getLastRow() - 1, 2); 
const values = range.getValues();
  • 2行目から最終行までの B列(緯度)と C列(経度)のデータを取得します。
  • 2, 2: 2行目の2列目(B列)からデータ取得を開始。
  • sheet.getLastRow() - 1: 最終行までの行数を計算。
  • 2: 2列分(B列とC列)を取得。
緯度・経度のDMS変換
const output = values.map(row => {
  const lat = row[0]; // 緯度(B列)
  const lng = row[1]; // 経度(C列)
  return [
    lat ? convert(lat) : "", // 緯度をDMS形式に変換
    lng ? convert(lng) : ""  // 経度をDMS形式に変換
  ];
});
  • values 配列の各行に対して map を使い、緯度と経度をDMS形式に変換します
  • 緯度が空なら空白("")、そうでなければDMS形式に変換します。
  • 緯度のDMS形式 → D列
  • 経度のDMS形式 → E列
DMS形式への変換関数
function convert(value) {
  const degrees = Math.floor(value); // 度(°)
  const minutes = Math.floor((value - degrees) * 60); // 分(′)
  const seconds = ((value - degrees) * 60 - minutes) * 60; // 秒(″)
  return degrees + "° " + minutes + "′ " + seconds.toFixed(2) + "″";
}
  • 緯度・経度の小数形式を「度・分・秒(DMS)」形式に変換します。
  • Math.floor(value): 小数点以下を切り捨てて「度」を取得します。
  • (value - degrees) * 60: 小数部分を60倍して「分」を取得します。
  • 「分の小数部分 * 60」: 秒を計算し、小数点以下2桁に丸めます。
  • 結果の結合: 35° 41′ 6.31″ のような文字列を返します。
D列・E列に結果を書き込む
sheet.getRange(2, 4, output.length, 2).setValues(output);
  • D列(4列目)とE列(5列目)に、DMS形式に変換した結果を出力します。
  • 2: 出力開始行(2行目)。
  • 4: 出力開始列(D列)。
  • output.length: 行数(入力データと同じ数)。
  • 2: 列数(D列とE列)。
STEP
スクリプトを保存

スクリプトを書いたら、名前を付けて保存します。

(例:「緯度経度(DMS一括)」)

STEP
スクリプトを実行

スクリプトを実行してB列,C列の緯度経度をDMS形式にして出力します。

初めてそのスクリプトを実行する場合は権限の確認が必要です。

そのため、『権限を確認』を押します。

許可の詳細手順

「詳細」をクリックします。

無題のプロジェクト(安全ではないページ)に移動」をクリックします。

許可」をクリックします。

STEP
緯度経度(DMS形式)が出力

緯度経度(DMS形式)が一括でD列、E列に出力されます。

まとめ

この記事では、緯度・経度を度・分・秒(DMS)形式に変換する3つの方法をご紹介しました。

  • 少量のデータなら「数式
  • 手軽に関数として使いたいなら「カスタム関数
  • 大量のデータを一括処理するなら「Google Apps Script

用途に合わせて最適な方法を選び、スプレッドシートでのデータ管理や業務効率化にご活用ください。

弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。

GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。

また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。

貴方の業務改善を全力でサポートいたします。

お問い合わせはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次