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

  • 相关阅读:
    hmac模块
    hashlib模块
    内存监控
    在全局对象(不是指针)的构造函数里不要对std集合做太多操作
    Lucene 4.X 倒排索引原理与实现
    Git工作流指南
    Spring cloud 框架 --- Eureka 心得
    分布式 的理解
    集群的理解
    Thrift框架-安装
  • 原文地址:https://www.cnblogs.com/hans_gis/p/8799162.html
Copyright © 2011-2022 走看看