VBA巧用split函数完成度分秒到经纬度转换

分类:代码, 博客 标签:

今接到几个水文站站点信息表,Excel表中的经纬度采用的是度分秒的格式填写的,格式如下:123°34′45″,而实际中使用的是采用十进制格式表达的经纬度样式,如:123.5791667。转换公式如下:经纬度=度+分/60+秒/3600。由于站点数量较多,显然每个都手动的方式把度分秒格式的几个部分分别取出来是繁杂且容易出错的,因此巧妙采用VBA中的split函数与val函数,水文工具集编写了一个函数DFM2JW完成这个简单实用的功能,具体源代码如下:

Option Explicit
'================================
' 经纬度角度格式到弧度格式的转换
'
' http://www.cnhup.com
'================================
Type TDFM
    D As Integer
    F As Integer
    M As Integer
End Type
Function DFM2JW(strDFM As String)
    Dim aDFM As TDFM
    Dim vecSplit As Variant

    vecSplit = Split(strDFM, "°", 2)
    aDFM.D = Val(vecSplit(0))
    vecSplit = Split(vecSplit(1), "′", 2)
    aDFM.F = Val(vecSplit(0))
    aDFM.M = Val(vecSplit(1))

    DFM2JW = aDFM.D + aDFM.F / 60 + aDFM.M / 3600
End Function


分类:代码, 博客 标签:

发表评论

You must be logged in to post a comment.