Excelで10進数の度を度、分、秒に変換するにはどうすればよいですか?
時々、ワークシートに10進数の度として表示されるデータのリストがあり、それを度、分、秒の形式に変換する必要があります。次のスクリーンショットに示すように、Excelでこの変換を迅速に行うにはどうすればよいですか?
![]() | ![]() | ![]() |
VBAを使用して10進数の度を度、分、秒に変換する
以下の手順に従って、VBAコードを使用して10進数の度を度、分、秒に変換してください。
1. ALTキーを押しながらキーボードの F11を押して、Microsoft Visual Basic for Applicationsウィンドウを開きます。
2. 「挿入」 > 「モジュール」をクリックし、VBAをモジュールにコピーします。
VBA:10進数の度を度、分、秒に変換する
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を使用して度、分、秒を10進数の度に変換する
時々、度/分/秒の形式のデータを10進数の度に変換したい場合があります。次のVBAコードは、それを迅速に実行するのに役立ちます。
1. ALTキーを押しながらキーボードのF11を押して、Microsoft Visual Basic for Applicationsウィンドウを開きます。
2. 「挿入」 > 「モジュール」をクリックし、VBAをモジュールにコピーします。
VBA:度、分、秒を10進数の度に変換する
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」ボタンをクリックします。スクリーンショットをご覧ください:
![]() | ![]() | ![]() |