我应该使用什么样的代码通过DMS坐标循环,并将其转换为十进制度在Excel VBA



我在excel中列出了大量的坐标数据,在DMS中有这样的格式,例如:

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"部分除以3600,将值的MM部分除以60,并将其添加到DD(有时当然是DDD)?

我想要的结果坐标张贴在列D和e

所以基本上,我希望它读取坐标,使用DD+(MM/60)+(SS.S/3600)的方法将DMS转换为十进制,然后循环遍历剩余的多个坐标。

我希望我说得足够清楚,如果不够清楚,请告诉我我解释得不好,我会尝试解释!这个网站上的好人的智慧将非常感激!!

(如果Excel上有一个简单的函数可以为我转换这个,我错过了,我提前为错过道歉,但我检查了,我找不到一个)

在第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)

这是你想要的吗?如果没有,请注释

当然,您必须根据数据的布局适当地设置公式,这只是一个示例。

最新更新