Note: The other languages of the website are Google-translated. Back to English

如何在Excel中將十進制度轉換為分鐘分秒?

有時,工作表中可能有以十進制度顯示的數據列表,現在您需要將十進制度轉換為度,分鐘和秒格式,如以下屏幕截圖所示,如何在Excel中快速進行對話?

使用VBA將十進制度數轉換為度,分,秒

使用VBA將度,分,秒轉換為十進制度

Office選項卡在Office中啟用選項卡式編輯和瀏覽,並使您的工作更加輕鬆...
Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%
  • 重用任何東西: 將最常用或最複雜的公式,圖表等添加到您的收藏夾中,並在將來快速重用它們。
  • 超過20種文字功能: 從文本字符串中提取數字; 提取或刪除部分文字; 將數字和貨幣轉換為英文單詞。
  • 合併工具:將多個工作簿和工作表合二為一; 合併多個單元格/行/列,而不會丟失數據; 合併重複的行和總和。
  • 分割工具:根據價值將數據分割成多個工作表; 一本工作簿可轉換為多個Excel,PDF或CSV文件; 一列到多列。
  • 跳過粘貼 隱藏/過濾的行; 計數與求和 按背景色; 向多個收件人批量發送個性化電子郵件。
  • 超級過濾器: 創建高級過濾方案並應用於任何工作表; 分類 按星期,日期,頻率等 篩選 用粗體,公式,註釋...
  • 超過300個強大的功能; 適用於 Office 2007-2021 和 365; 支持所有語言; 在您的企業或組織中輕鬆部署。

箭頭藍色右氣泡 使用VBA將十進制度數轉換為度,分,秒

請按照以下步驟使用VBA代碼將十進制度數轉換為度,分和秒。

1。 保持 ALT 按鈕並按下 F11 在鍵盤上打開一個 Microsoft Visual Basic應用程序 窗口。

2。 點擊 插入 > 模塊,然後將VBA複製到模塊中。

VBA:將十進制度轉換為度,分鐘和秒

Sub ConvertDegree()
'Update 20130815
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
    num1 = Rng.Value
    num2 = (num1 - Int(num1)) * 60
    num3 = Format((num2 - Int(num2)) * 60, "00")
    Rng.Value = Int(num1) & "°" & Int(num2) & "'" & Int(num3) & "''"
Next
End Sub

3。 點擊 按鈕或按下 F5 運行VBA。

4.屏幕上顯示一個對話框,您可以選擇要轉換的單元格。 看截圖:

5。 點擊 OK,然後將所選數據轉換為度,分鐘和秒。 看截圖:

尖端:使用上面的VBA代碼將丟失原始數據,因此最好在運行代碼之前複製數據。


箭頭藍色右氣泡 使用VBA將度,分,秒轉換為十進制度

有時,您可能希望將以度/分/秒為單位的數據格式轉換為十進制度,下面的VBA代碼可以幫助您快速完成。

1。 保持 ALT按鈕並按 F11 在鍵盤上打開“ Microsoft Visual Basic for Application”窗口。

2。 點擊 插入 > 模塊,然後將VBA複製到模塊中。

VBA:將度,分和秒轉換為十進制度

Function ConvertDecimal(pInput As String) As Double
'Updateby20140227
Dim xDeg As Double
Dim xMin As Double
Dim xSec As Double
xDeg = Val(Left(pInput, InStr(1, pInput, "°") - 1))
xMin = Val(Mid(pInput, InStr(1, pInput, "°") + 2, _
             InStr(1, pInput, "'") - InStr(1, pInput, _
             "°") - 2)) / 60
xSec = Val(Mid(pInput, InStr(1, pInput, "'") + _
            2, Len(pInput) - InStr(1, pInput, "'") - 2)) _
            / 3600
ConvertDecimal = xDeg + xMin + xSec
End Function

3.保存代碼並關閉窗口,選擇一個空白單元格,例如Cell A1,輸入此公式 = ConvertDecimal(“ 10°27'36”“”) (“ 10°27'36”“”代表要轉換為十進制的度,您可以根據需要進行更改),然後單擊 Enter 按鈕。 查看屏幕截圖:


相關文章

按評論排序
留言 (16)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
代碼中有一些錯誤我嘗試使用此代碼轉換 26°10'55.416",結果為 26.00139,應該是 26.18206(計算和驗證..如果有人知道原因,請告訴我。
網站主持人對此評論進行了最小化
[quote]代碼中存在一些錯誤,我嘗試使用此代碼轉換 26°10'55.416",結果為 26.00139,應該是 26.18206(計算和驗證..如果有人知道原因,請告訴我。拉詹辛·扎拉[/quote] 似乎代碼在 ° 和 ' 符號後需要一個空格。 26° 10' 55.416" 給出了正確答案。您可以在一個單元格(例如 A1)中輸入您的輸入,並使用公式 =ConvertDecimal(A1) 在另一個單元格中獲取結果。如果您有很多數字,這很方便被轉換。
網站主持人對此評論進行了最小化
真的很有幫助。 謝謝你。
網站主持人對此評論進行了最小化
要意識到的最重要的事情是,您不能簡單地使用上標和小寫字母 o 作為度數符號——這對某些人來說可能很明顯,但對我來說不是。 我嘗試了上標字母 o,但它不起作用,我刪除了上標字母 o,並使用 Alt 0176 作為實際的度數符號,它起作用了!! 我很困惑為什麼幾秒鐘後會有額外的雙引號? 36""") 而在隨後的評論中,如果一個人簡單地使用 =ConvertDecimal(A1) 只使用一組引號來表示秒。奇怪的是我們可以使用單引號和雙引號,這個東西適用於分鐘和秒,但上標字母 o不是嗎?要檢查 27/60 = .45 smf 36/3600 = .01 添加兩個 = .46 並將其添加到度數 = 10.46 度。希望這對其他人有幫助嗎?
網站主持人對此評論進行了最小化
發現這段代碼很有幫助。 好東西!
網站主持人對此評論進行了最小化
我想在地圖上繪製位置,我們不用擔心 N、S、E 或 W。我相信這些可以用“if”語句添加。 我剛剛在 Excel 電子表格中使用了一組非常簡單的函數。 我想從度(十進制)到度,秒(十進制)將負值更改為正值,因為我知道我在哪個半球。對我來說,單元格 E4 包含目標緯度或經度(十進制)。 這比輸入一些 VBA 代碼要容易一些,並且可以擴大到做 DD,MM,SS =CONCATENATE(TRUNC(ABS(E4)),"°",FIXED((ABS(E4)-TRUNC(ABS(E4) )))*60,2),"'")
網站主持人對此評論進行了最小化
效果很好,但我將如何調整代碼以在幾秒鐘內獲得更多數字?
網站主持人對此評論進行了最小化
您好,我使用腳本將十進制轉換為 DMS,但是代碼在某處是錯誤的,因為它原來是 37.856908,-120.912469 到 37D 51M 25S,-121D 5M 15S 這太遠了......有人有解決這個問題的方法嗎?
網站主持人對此評論進行了最小化
不確定 Ernie 帖子中的代碼有什麼問題,但這是我在不使用 VB 的情況下將電子表格中的十進制度轉換為 DMS 度的方法。 對單元格 E33 的引用是包含十進制度值的單元格。 =CONCAT(FIXED(INT(B32), 0) , "°", FIXED(((B32 - INT(B32)) * 60), 0), "'", FIXED(((B32 - INT(B32) - INT(B32 - INT(B32))) * 3600), 0 ,TRUE), """) 祝你好運。
網站主持人對此評論進行了最小化
嗨 CORNY,不適合我,EXCEL 不接受這個功能.....怎麼了? 你能幫助我嗎?
網站主持人對此評論進行了最小化
請我希望你幫助並在紙上編寫一個計算機程序,將度數的十進制轉換為度分和秒。 來自ahans的317.5986740026。
網站主持人對此評論進行了最小化
第 1 步,將小數點後的數字乘以 60 (0.5986740026*60)minutes=35.92044015 表示 35 分鐘
spet 2,乘以分鐘後的小數即 0.9204401*60=55.2264
所以 317 度 35 分 55 秒
網站主持人對此評論進行了最小化
像冠軍一樣工作! 感謝分享!!!
網站主持人對此評論進行了最小化
檢查你的結果。 這段代碼是錯誤的。
網站主持人對此評論進行了最小化
代碼有一個假設在°和'之後有一個空格。 將代碼中的2改為1即可解決。
函數 ConvertDecimal(pInput As String) As Double
'Updateby20140227
將 xDeg 調暗為 Double
將 xMin 調暗為 Double
將 xSec 調暗為 Double
xDeg = Val(左(pInput, InStr(1, pInput, "°") - 1))
xMin = Val(Mid(pInput, InStr(1, pInput, "°") + 1, _
InStr(1, pInput, "'") - InStr(1, pInput, _
"°") - 1)) / 60
xSec = Val(Mid(pInput, InStr(1, pInput, "'") + _
1, Len(pInput) - InStr(1, pInput, "'") - 1)) _
/ 3600
ConvertDecimal = xDeg + xMin + xSec
函數結束
網站主持人對此評論進行了最小化
錯誤的計算結果... 29°30'13" 34°55'4" ---> 29.00083333 34.08333333
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護