如何在 Excel 中将十进制度数转换为度分秒格式?
有时,工作表中可能包含一列以十进制度数表示的数据,而您需要将其快速转换为度、分、秒格式(如下图所示)。如何在 Excel 中高效完成这一转换?
![]() | ![]() | ![]() |
使用 VBA 将十进制度数转换为度分秒格式
请按照以下步骤,使用 VBA 代码将十进制度数转换为度、分、秒格式。
1. 按住 ALT 键并按下 F11 键,即可打开 Microsoft Visual Basic for Applications 窗口。
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. 单击确定,所选数据即被转换为度、分、秒格式。参见下图:
![]() | ![]() | ![]() |
提示:使用上述 VBA 代码将覆盖原始数据,建议运行前先备份数据!
使用 VBA 将度分秒格式转换为十进制度数
有时,您可能需要将度/分/秒格式的数据快速转换为十进制度数,以下 VBA 代码可助您轻松实现这一操作。
1. 按住 ALT 键,再按下 F11 键,即可打开 Microsoft Visual Basic for Applications 窗口。
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. 保存代码后,关闭此窗口,选择一个空白单元格(例如 A1 单元格),输入公式 =ConvertDecimal("10° 27' 36""")(其中 "10° 27' 36"““ 表示您要转换为十进制度数的度值,可根据需要修改),然后按 Enter 键。参见下图:
![]() | ![]() | ![]() |




