1. 程式人生 > >Excel中使用VBA進行度分秒與十進制度的轉換

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

進制 integer http order get png sheet 搭建 作用

發現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表格中的行數和列數

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