如何把单元格中 经纬度 60进制转成10进制

来源:互联网 发布:霸气业务网站源码 编辑:程序博客网 时间:2024/05/22 17:34

PS: Format 可能具体问题具体分析,但是思路和写法代码可以参照如下。

Attribute VB_Name = "LongiAndLati60To10SP1"
'2015/04/08 ADD By Maouizayoi

Option Explicit

' Excute Interface.
Sub LongiAndLati60To10SP1()

    Dim sht1 As Object
    Dim bRng As Range
    Dim cRng As Range
    Dim blankM, blankP, colRelPst, band60 As Integer
    blankM = 2
    blankP = 1
    colRelPst = 3
    band60 = 60
    
    Set sht1 = Sheets("Sheet1")
       
    For Each cRng In Intersect(sht1.UsedRange, Columns("C"))
        If cRng.Value = "" Then
            Exit For
        ElseIf cRng.Value = "LONGITUDE" Then
            ' TODO LoopStart
        Else
            sht1.Cells(cRng.Row, cRng.Column + colRelPst) = CDbl(Mid(cRng.Value, blankM, InStr(cRng.Value, " ") - blankM)) + CDbl(Mid(cRng.Value, InStr(cRng.Value, " ") + blankP)) / band60
        End If
    Next
       
    For Each bRng In Intersect(sht1.UsedRange, Columns("B"))
        If bRng.Value = "" Then
            Exit For
        ElseIf bRng.Value = "LATITUDE" Then
            ' TODO LoopStart
        Else
            sht1.Cells(bRng.Row, bRng.Column + colRelPst) = CDbl(Mid(bRng.Value, blankM, InStr(bRng.Value, " ") - blankM)) + CDbl(Mid(bRng.Value, InStr(bRng.Value, " ") + blankP)) / band60
        End If
    Next
    
End Sub

'Sub Test()
'
'   Dim sht1 As Object
'    Dim rng As Range
'
'    Set sht1 = Sheets("Sheet1")
'
'    sht1.Range("E2") = CDbl(Mid(sht1.Range("B2").Value, 2, InStr(sht1.Range("B2").Value, " ") - 2)) + _
'        CDbl(Mid(sht1.Range("B2").Value, InStr(sht1.Range("B2").Value, " ") + 1) / 60)
'
'    sht1.Range("F2") = CDbl(Mid(sht1.Range("C2").Value, 2, InStr(sht1.Range("C2").Value, " ") - 2)) + _
'        CDbl(Mid(sht1.Range("C2").Value, InStr(sht1.Range("C2").Value, " ") + 1) / 60)
'
'End Sub


变换前后’



0 0