Можно ли в экселе десятичные градусы перевести..
Можно ли в экселе десятичные градусы перевести в формат - градусы минуты секунды (например, 84,506631град = 84град 30' 24''). Какая нужна формула?
Встроенных функций в Excel вроде бы нет. Но решить проблему можно так. Пусть у нас в ячейке A2 находится число 84,506631.
Способ 1 (громоздкий). Здесь мы используем комбинацию из встроенных функций. Формула будет выглядеть так:
=ЕСЛИ (ЕСЛИ (ОКРУГЛ (((A2-ОКРВНИЗ (A2;1))*60-ОКРВНИЗ ((A2-ОКРВНИЗ (A2;1))*60;1))*60;0)=60;ОКРВНИЗ ((A2-ОКРВНИЗ (A2;1))*60;1)+1;ОКРВНИЗ ((A2-ОКРВНИЗ (A2;1))*60;1))=60;ОКРВНИЗ (A2;1)+1;ОКРВНИЗ (A2;1)) & "° " & ЕСЛИ (ЕСЛИ (ОКРУГЛ (((A2-ОКРВНИЗ (A2;1))*60-ОКРВНИЗ ((A2-ОКРВНИЗ (A2;1))*60;1))*60;0)=60;ОКРВНИЗ ((A2-ОКРВНИЗ (A2;1))*60;1)+1;ОКРВНИЗ ((A2-ОКРВНИЗ (A2;1))*60;1))=60;0;ЕСЛИ (ОКРУГЛ (((A2-ОКРВНИЗ (A2;1))*60-ОКРВНИЗ ((A2-ОКРВНИЗ (A2;1))*60;1))*60;0)=60;ОКРВНИЗ ((A2-ОКРВНИЗ (A2;1))*60;1)+1;ОКРВНИЗ ((A2-ОКРВНИЗ (A2;1))*60;1))) & "' " & ЕСЛИ (ОКРУГЛ (((A2-ОКРВНИЗ (A2;1))*60-ОКРВНИЗ ((A2-ОКРВНИЗ (A2;1))*60;1))*60;0)=60;0;ОКРУГЛ (((A2-ОКРВНИЗ (A2;1))*60-ОКРВНИЗ ((A2-ОКРВНИЗ (A2;1))*60;1))*60;0)) & "''"
Способ 2 (изящный). Здесь применяется макрос. Для этого создается модуль, в который помещается следующий код (набросал минут за десять):
Function ГрадусыМинутыСекунды (Число As Double, ВыборРезультата As Byte) As String
Dim Градусы As Integer, Минуты As Integer, Секунды As Integer
Dim Остаток As Double
Градусы = Int(Число)
Остаток = Число - Градусы
Минуты = Int(Остаток * 60)
Остаток = Остаток * 60 - Минуты
Секунды = Round(Остаток * 60)
If (Секунды = 60) Then
Минуты = Минуты + 1
Секунды = 0
End If
If (Минуты = 60) Then
Градусы = Градусы + 1
Минуты = 0
End If
If (ВыборРезультата = 1) Then
ГрадусыМинутыСекунды = Градусы & "° " & Минуты & "' " & Секунды & "''"
End If
If (ВыборРезультата = 2) Then
If (Минуты <> 0) And (Секунды = 0) Then ГрадусыМинутыСекунды = Градусы & "° " & Минуты & "'"
If (Минуты = 0) And (Секунды = 0) Then ГрадусыМинутыСекунды = Градусы & "°"
If (Секунды <> 0) Then ГрадусыМинутыСекунды = Градусы & "° " & Минуты & "' " & Секунды & "''"
End If
If (ВыборРезультата <> 1) And (ВыборРезультата <> 2) Then ГрадусыМинутыСекунды = "ВыборРезультата не равен 1 или 2"
End Function
После этого на листе Excel функцию в ячейке можно вызывать так
=ГрадусыМинутыСекунды (A2;1)
или
=ГрадусыМинутыСекунды (A2;2)
В первом случае нулевые секунды будут отображаться, во втором - нет.
P.S. Если будут какие-либо вопросы, обращайтесь. Задача понравилась.
Проверено геодезическим калькулятором.
=ТЕКСТ (ОТБР (A2);"0"&СИМВОЛ (176))&ТЕКСТ (ЦЕЛОЕ (ОСТАТ (A2;1)*60);"0'")&ТЕКСТ (ОСТАТ ((ОСТАТ (A2;1)*60);1)*60;"0,0''")