1. 程式人生 > >度分秒轉換十進制度 之Excel實現

度分秒轉換十進制度 之Excel實現

中括號 得出 str 我們 經緯度 就會 mil src spa

我們都知道,1°=60′,1′=60″,1°=3600″。
那麽,輕而易舉容易計算:112°18′37.6″=112+18/60+37.6/3600≈112.3104444°
這當然是有參考價值的,比如爬下一張只有度分秒形式的經緯度表格,但是,我們的GIS軟件只認十進制度(原因無非就是十進制好算),那麽通過Excel的字符串操作函數,就可以輕松轉換為十進制度。

【註意】伸手黨(劃掉)急著要結果的同學可以看第4小節,拉最後有完整的公式給出,不必看1、2、3小節這些過程。

1 預備知識(三個函數)

1.1 FIND()函數

FIND函數可以找到某個字符(串)在指定字符串的哪裏。

我們說,CHINA中字母N在第4個,那麽

4=FIND("N","CHINA")

如果CHINA在單元格A1,那麽

4=FIND("N",A1)

// FIND函數還有第三個參數,此處不討論

即得出結論:

I = FIND(S,D)
 I——S在D的位置
 S——查找的字符()串
 D——被查找的字符串

1.2 LEFT()函數

LEFT()函數可以獲取從左邊開始數的第n個字符,通俗點講就是在第n個處切開,前n個留下形成結果字符串,其他的扔了。即:

LEFT("CHINA", 3)="CHI"
LEFT("CHINA", 1)="C"

1.3 MID()函數

與LEFT類似,從左往右第i個起算,取j個,頭和尾不要了。

MID("CHINA",3,2)="IN"
MID("CHINA",1,4)="CHIN"

2. 提取度&分&秒的數值

OK,有了上部分的預備,那麽我們就要對[112°18′37.6″]中括號內的字符串進行切割,把度分秒分別切出來。

首先,我們要獲取°號、′號、″號的位置:

A1=112°1837.6″
A2=FIND("°", A1) //結果是4
A3=FIND("′", A1) //結果是7
A4=FIND("″", A1) //結果是12,小數點也占一位字符

然後,使用LEFT取到度(註意是到°號之前的2,不是到度號):

B1=LEFT(A1,A2) //結果錯誤,是112°,並不是我們想要的112
B1
=LEFT(A1,A2-1) //結果是112

用MID取到分的數值。

註意,起點不是°號了,是度號往右一個,即A2+1。

要取多少個數字呢?這裏分的數值是兩位,則A3-A2-1剛好是2:

B2=MID(A1,A2+1,A3-A2-1) //結果是18

用MID取到秒的數值(起點數字,和取長,與分的數值同理):

B3=MID(A1,A3+1,A4-A3-1) //結果是37.6

如果不太能理解A3-A2-1為啥剛好是分的數值的位數,自己稍微動一下腦筋就想出來了,用位數的順序相減唄。

3. 拼接

這一步就簡單了,使用簡單的數學四則運算:

C1=B1+B2/60+B3/3600  //結果是112.3104444

技術分享圖片

4. 整合所有公式到一個單元格

分步列公式是為了清晰過程,實際只需要一個單元格就可以計算,總結一下:

十進制度
    =取度+取分/60+取秒/3600
    =B1 + B2/60 + B3/3600
    =LEFT(A1,A2-1)  +  MID(A1,A2+1,A3-A2-1)  +  MID(A1,A3+1,A4-A3-1)
    =LEFT(A1, FIND("°", A1)-1)
     +
     MID(A1, FIND("°", A1)+1, FIND("′", A1)-FIND("°", A1)-1)/60
     +
     MID(A1, FIND("′", A1)+1, FIND("″", A1)-FIND("′", A1)-1)/3600

如果不寫成換行,那麽結果就會是:

// A1是度分秒形式的坐標值單元格

=LEFT(A1, FIND("°", A1)-1) + MID(A1, FIND("°", A1)+1, FIND("′", A1)-FIND("°", A1)-1)/60 + MID(A1, FIND("′", A1)+1, FIND("″", A1)-FIND("′", A1)-1)/3600

如下圖所示:

技術分享圖片

度分秒轉換十進制度 之Excel實現