Excel中使用VBA進行度分秒與十進位制度的轉換

2022-02-05 01:38:17 字數 1944 閱讀 3676

發現excel的vba功能真是批量處理的一把利刃,工作中小試牛刀了一把,將excel中度分秒形式的座標批量處理成十進位制度形式,處理完後用於gis展點製圖。

原excel資料如下:

vba**如下:

1

subcoorder()

2dim longitude, latitude as

string

, arr

3dim num as

integer

4dim longcolidx as

integer

5dim latcolidx as

integer

6 longcolidx = 3

7 latcolidx = 8

a:a"))9

for i = 2

tonum

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

2021 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

31nexti32

end sub

處理完結果如下:

結論:1、對於excel大批量資料處理,效率極高。

① 開發環境方面,無需搭建特定的開發環境,在excel裡就可以進行編碼;

② 編碼方面,由於直接是寄生於excel自身,相當於一種內嵌的api,其api介面簡單、整合度高、呼叫方便;

2、上述**其實可以額外起乙個作用,就是對原始度分秒資料的文字格式做質檢。

附:用vba得到excel**中的行數和列數

Excel中使用VBA訪問Access資料庫

excel中使用vba的優點 巨集是vba的一種簡單應用。巨集可以通過編寫vba 錄製巨集兩種方式獲得。通常是先錄製巨集,再在獲得的巨集的基礎上進行語句優化調整,最後得到想要的巨集。在 誰說菜鳥不會資料分析 工具篇 第四章 讓報告自動化中,涉及到根據輸入日期,從access資料庫中提取相關資料到ex...

EXCEL中使用VBA取有效使用區域

原創 牛超 2009 06 osaka 如題,修改原來的指令碼,引用usedrange private sub fillvalueauto astr as string,currow as long dim svalue as string dim sbatname as string dim sp...

Mysql中使用explain進行效能分析

explain顯示了mysql如何使用索引來處理select語句以及連線表。可以幫助選擇更好的索引和寫出更優化的查詢語句。先解析一條sql語句,看出現什麼內容 select識別符。這是select查詢序列號。查詢序號代表sql語句執行的順序,看下面這條sql explainselect from s...