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

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

原Excel數據如下:

VBA代碼如下:

 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

處理完結果如下:

結論:

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

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

  ② 編碼方面,由於直接是寄生於Excel自身,相當於一種內嵌的API,其API接口簡單、集成度高、調用方便;

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

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章