Excel中使用VBA進行度分秒與十進制度的轉換

發現Excel的VBA功能真是批量處理的一把利刃,工做中小試牛刀了一把,將Excel中度分秒形式的座標批量處理成十進制度形式,處理完後用於GIS展點製圖。git

原Excel數據以下:編碼

VBA代碼以下:spa

 1 Sub Coorder()
 2     Dim Longitude, Latitude As String, arr
 3     Dim num As Integer
 4     Dim LongColIdx As Integer
 5     Dim latColIdx As Integer
 6     LongColIdx = 3
 7     latColIdx = 8
 8     num = Application.CountA(ActiveSheet.Range("A:A"))
 9     For i = 2 To num
10         Longitude = Cells(i, LongColIdx)
11         arr = Split(Longitude, "°")
12         Cells(i, LongColIdx + 1) = arr(0)
13         Longitude = arr(1)
14         arr = Split(Longitude, "'")
15         Cells(i, LongColIdx + 2) = arr(0)
16         Longitude = arr(1)
17         arr = Split(Longitude, """")
18         Cells(i, LongColIdx + 3) = arr(0)
19         Cells(i, LongColIdx + 4) = Cells(i, LongColIdx + 1) + Cells(i, LongColIdx + 2) / 60 + Cells(i, LongColIdx + 3) / 3600
20         
21         Latitude = Cells(i, latColIdx)
22         arr = Split(Latitude, "°")
23         Cells(i, latColIdx + 1) = arr(0)
24         Longitude = arr(1)
25         arr = Split(Longitude, "'")
26         Cells(i, latColIdx + 2) = arr(0)
27         Longitude = arr(1)
28         arr = Split(Longitude, """")
29         Cells(i, latColIdx + 3) = arr(0)
30         Cells(i, latColIdx + 4) = Cells(i, latColIdx + 1) + Cells(i, latColIdx + 2) / 60 + Cells(i, latColIdx + 3) / 3600
31     Next i
32 End Sub

處理完結果以下:.net

結論:code

一、對於Excel大批量數據處理,效率極高。blog

  ① 開發環境方面,無需搭建特定的開發環境,在Excel裏就能夠進行編碼;接口

  ② 編碼方面,因爲直接是寄生於Excel自身,至關於一種內嵌的API,其API接口簡單、集成度高、調用方便;開發

二、上述代碼其實能夠額外起一個做用,就是對原始度分秒數據的文本格式作質檢。get

 

附:用VBA獲得EXCEL表格中的行數和列數it

相關文章
相關標籤/搜索