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、上述代码其实可以额外起一个作用,就是对原始度分秒数据的文本格式做质检。
出处:http://www.cnblogs.com/hans_gis/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。