zoukankan      html  css  js  c++  java
  • 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表格中的行数和列数

  • 相关阅读:
    7月27日
    7月26日
    7月25日
    7月24日
    UI基础 选项卡
    UI基础 手势
    UI基础 小球拖拽
    UI基础 事件
    UI基础 自定义视图
    UI基础 视图控制器
  • 原文地址:https://www.cnblogs.com/hans_gis/p/8799162.html
Copyright © 2011-2022 走看看