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表格中的行数和列数

转载于:https://www.cnblogs.com/hans_gis/p/8799162.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值