0

たとえば、DMSのようにフォーマットされたExcelの座標データがたくさんあります。

893952N1001233.1
882222N0991244.4
... 
...

などなど。

そのデータは私の列Aにあります。

その列をテキストとして扱い、両方の座標を「N」で区切って、列Bと列Cの別々の列で両方の座標を取得できるようにしました(例:B1:893952、C1:1001233.1; B2:882222 C2 :991244.4)

これらの数値はDMSにあるため、もちろん小数があるかどうかに応じてDDMMSS.Sになります。もちろん、あるものとないものがあります。列BとCのDMS座標を読み取り、値の「SS.S」部分を取得して3600で除算し、値のMM部分を取得して除算することにより、それらを10進角に変換するコードを使用できます。 60までに、それをDD(もちろんDDDの場合もあります)に追加しますか?

結果の座標をD列とE列に投稿したいと思います。

したがって、基本的には、座標を読み取り、DD +(MM / 60)+(SS.S / 3600)の方法を使用して、DMSから小数に変換してから、残りの多数の座標をループするようにします。

私はこれを十分に明確にしたことを望みます、それが十分に明確でない場合は、私が不十分に説明したことを教えてください、そして私は説明しようとします!このサイトの善良な人々の知恵をいただければ幸いです!

(Excelに、これを変換して欠落している単純な関数がある場合は、事前に欠落していることをお詫びしますが、確認したところ、見つかりませんでした)

4

1 に答える 1

1

列1に次のように入力します(新しい行はそれぞれ新しい行です)。

893952N1001233.1
=LEFT(A1,FIND("N",A1)-1)
=RIGHT(A1,LEN(A1)-FIND("N",A1))
=IF(OR(LEN(A2)=7,LEN(A2)=9),LEFT(A2,3)+MID(A2,4,2)/60+RIGHT(A2,LEN(A2)-5)/3600,LEFT(A2,2)+MID(A2,3,2)/60+RIGHT(A2,LEN(A2)-4)/3600)
=IF(OR(LEN(A3)=7,LEN(A3)=9),LEFT(A3,3)+MID(A3,4,2)/60+RIGHT(A3,LEN(A3)-5)/3600,LEFT(A3,2)+MID(A3,3,2)/60+RIGHT(A3,LEN(A3)-4)/3600)

それはあなたが探しているものですか?そうでない場合はコメントしてください。

もちろん、データのレイアウトに合わせて数式を適切に設定する必要があります。これは単なる例です。

于 2013-01-09T04:57:53.720 に答える