码迷,mamicode.com
首页 > 编程语言 > 详细

Excel中使用VBA进行度分秒与十进制度的转换

时间:2018-04-11 23:10:16      阅读:372      评论:0      收藏:0      [点我收藏+]

标签:png   cell   表格   bsp   inf   ext   .net   分享   文本   

发现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进行度分秒与十进制度的转换

标签:png   cell   表格   bsp   inf   ext   .net   分享   文本   

原文地址:https://www.cnblogs.com/hans_gis/p/8799162.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!