Excel中使用VBA進行度分秒與十進制度的轉換
阿新 • • 發佈:2018-04-12
進制 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 = 88 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進行度分秒與十進制度的轉換