例えば以下のように文字数がバラバラの
60進法で表された緯度経度の情報があったとします。
N34'17'31.03E135'16'32.96
N34'17'44.06E135'31'18.5
N35'20'44.67E135'7'3.66
N34'57'25.71E135'57'41.48
N34'57'25.71E135'57'41.48
N35'4'59.77E135'3'2.91
N34'48'55.77E134'43'41.06
これを一括で変換し、10進法で表したいのです。
文字数がバラバラなので、条件としては区切り文字である
'を利用して変換するしかないと思っています。
(例)10進法にする計算~手動ならば~
N35'4'59.77E135'3'2.91
ならば、手動でするには
N35'4'59.77=35+(4/60)+(59.77/3600)
E135'3'2.91=135+(3/60)+(2.91/3600)
で導かれます。手動では文字数関係なく
'区切りで計算できるので、このような簡単なエクセル計算で
成り立ちます。が、大量にある場合はそれも時間がかかり
厳しい状況です。完全自動化のためには良い関数が浮かびません・・。
どうかご教授くださいませ。
'がPointである事はわかっているのですが。。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
順に処理していけば、さほど難しい部分はありませんが、
手順がやたらと多くなってしまうのが難点ですね。
まず作業列を用いた解決を示します。
●緯度と経度が同一のセルに入っている場合
※緯度と経度があらかじめ別のセルに分かれている場合は3から。
元のデータがA列に入っているものとすると、
0.緯度と経度の区切(" ")の位置を探す
B1セル:=FIND(" ",A1)
1.緯度を取り出す
C1セル:=LEFT(A1,B1-1)
2.経度を取り出す
D1セル:=RIGHT(A1,LEN(A1)-B1)
●緯度について
緯度のデータがC列に入っているものとすると、
3.最初の"'"の位置を探す
E1セル:=FIND("'",C1)
4.2番目の"'"の位置を探す
F1セル:=FIND("'",C1,E1+1)
5.度の値を取り出す
G1セル:=MID(C1,2,E1-2)
6.分の値を取り出す
H1セル:=MID(C1,E1+1,F1-E1-1)
7.秒の値を取り出す
I1セル:=MID(C1,F1+1,LEN(C1)-F1)
8.十進法に直す
J1セル:=G1+H1/60+I1/3600
※経度についても同様です。
●一発でやってみる
8の数式に7~3の数式を順に代入していけば、
一つの数式にまとめることもできます。
ただし、同じ計算を何度も繰り返すことになりますから、
データの量によっては処理速度に問題が出るかもしれませんし、
保守性も悪くなります。
緯度または経度のデータがC列に入っているものとすると、
=MID(C1,2,FIND("'",C1)-2)+MID(C1,FIND("'",C1)+1,FIND("'",C1,FIND("'",C1)+1)-FIND("'",C1)-1)/60+MID(C1,FIND("'",C1,FIND("'",C1)+1)+1,LEN(C1)-FIND("'",C1,FIND("'",C1)+1))/3600
(Excel2003で動作確認済)
No.3
- 回答日時:
>完全自動化のためには良い関数が浮かびません・・。
作るのが一番でしょうね。
下に例を書いておきます。(かなり手抜きですが)
使い方は『ツール』⇒『マクロ』⇒『Visual Basic Editer』
editerで『挿入』⇒『標準モジュール』
で出てきた画面に貼り付けてください。
後は普通に関数として呼び出せます。(分類はユーザー定義)
最初のidoには文字列を、次のnewsに0を入れると北緯を、1を入れると東経を返します。
Function 緯度経度(ido As String, news As Boolean) As Double
Dim ct As Integer
Dim ct1 As Integer
For ct = 1 To Len(ido)
If Mid(ido, ct, 1) = "E" Or Mid(ido, ct, 1) = "W" Then Exit For
Next
If news Then
ido = Right(ido, Len(ido) - ct + 1)
Else
ido = Left(ido, ct - 1)
End If
For ct = 2 To Len(ido)
If Asc(Mid(ido, ct, 1)) < 46 Or Asc(Mid(ido, ct, 1)) > 57 Then Exit For
Next
緯度経度 = Val(Mid(ido, 2, ct - 1))
For ct1 = ct + 1 To Len(ido)
If Asc(Mid(ido, ct1, 1)) < 46 Or Asc(Mid(ido, ct1, 1)) > 57 Then Exit For
Next
緯度経度 = 緯度経度 + Val(Mid(ido, ct + 1, ct1 - ct - 1)) / 60 + Val(Right(ido, Len(ido) - ct1)) / 3600
End Function
No.1
- 回答日時:
データを選んで、
メニュー「データ」→「区切り位置」で、区切り位置指定ウィザードが立ち上がります。
(1/3)元のデータの形式を「カンマやタブなどの区切り文字によって~」として、
(2/3)区切り文字で「その他」を選び、「'」としてみれば、いかがでしょうか?
とりあえず、一括で処理することができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 工学 以前、線形代数からフーリエ級数展開を導く上で 式v=(v, e1)e1+(v, e2)e2+…+(v 6 2022/06/29 17:24
- 工学 ちなみになぜv=(v・e1)e1+(v・e2)e2はe1やe2が、正規直交基底でないと成り立たないと 2 2022/12/22 17:22
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- その他(Microsoft Office) IF関数について教えてください 2 2022/05/10 13:31
- Excel(エクセル) エクセルで、 A1セルに「A」という値、 B1セルに「B」という値が入っています。 どちらも表示形式 5 2023/02/22 23:05
- Excel(エクセル) ある範囲のセルに何を入力すると、別のセルに○を表示させる 3 2022/04/05 15:51
- 物理学 無限に深い井戸におけるエネルギーと運動量の分布の矛盾 量子力学 3 2023/01/28 02:10
- 電気工事士 平均照度の計算あっているか教えてください。忙しいと思いますがよろしくお願いします。 現地測定し数値を 1 2022/09/29 07:37
- Excel(エクセル) この関数はなんですか? IFがこんな形で入っているのですが、この不完全な形であり得るのをはじめてみま 3 2023/01/31 15:14
- Excel(エクセル) エクセルの表で A1にデータの入力規則でリストを作って、 (リス、キリン、ゾウとします) リストを選 4 2022/07/15 09:29
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数学の法則を発見しました
-
複素数平面について質問です。 ...
-
演算子法なににつかう
-
1/3で場合分けは?
-
ド・モルガンの法則がほんとに...
-
a, bがa>0, b>0,1/a+2/b=3を満...
-
この問題でPQ=r1+r2になる理由...
-
偶数≠奇数の判定はどうやるのか?
-
新高一。数学のテストがもう少...
-
簡単な算数の質問です。 例えば...
-
確率の質問です 当たる確率が10...
-
いいすぎ?
-
写真の問題について、APベクト...
-
代数
-
積分定数どこまで
-
(a、bは定数) z、x、yという変...
-
次の空欄に当てはまるものを以...
-
級数の係数を求める
-
研究室でちょっとういてる?
-
微分係数の定義?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
多変数関数、合成関数
-
n進法について・・・(4)
-
緯度経度をエクセルで一括自動変換
-
緯度経度 Degree形式の表記に...
-
アメリカの電話番号から住所を...
-
平日の15時過ぎに城ヶ崎海岸駅...
-
写真右上にあるNのようなマーク...
-
通勤定期券について 乗り換え不...
-
グーグルマップに文字を書込む...
-
下北沢の窓口で定期券は購入出...
-
Google Map Street View の黄色...
-
5月20日(月)あたりに首都圏中央...
-
USJは何区?何市??
-
住所から自宅の電話番号は分か...
-
スマホのこれ何ですか?
-
グーグルマップで いつも 自...
-
googleマップについて PCとスマホ
-
車のナビですが、Googleマップ...
-
会社に通勤経路図の提出が必要...
-
スマートウォッチでグーグルマ...
おすすめ情報