расчет формулы Excel - PullRequest
       4

расчет формулы Excel

0 голосов
/ 16 ноября 2011

У меня около 200 широт и 200 долгот в разных местах моего листа Excel, которые имеют формат-

градусы, минуты и секунды, например: 36 ° 34 "44 '

Это значение хранится в одной ячейке.

Я хочу преобразовать это значение в десятичные дроби, используя формулу градус + минуты / 60 + секунды / 3600. Пожалуйста, скажите мне, как применять то же самое в каждой клетке. Проблема в том, что все градусы, минуты и секунды находятся в одной ячейке. Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Вот пример функции VBA, которую вы, вероятно, можете использовать:

Function Convert_Decimal(Degree_Deg As String) As Double
   Dim degrees As Double
   Dim minutes As Double
   Dim seconds As Double
   ' Set degree to value before "°" of Argument Passed.
   degrees = Val(Left(Degree_Deg, InStr(1, Degree_Deg, "°") - 1))
   ' Set minutes to the value between the "°" and the "'"
   ' of the text string for the variable Degree_Deg divided by
   ' 60. The Val function converts the text string to a number.
   minutes = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "°") + 2, _
             InStr(1, Degree_Deg, "'") - InStr(1, Degree_Deg, _
             "°") - 2)) / 60
    ' Set seconds to the number to the right of "'" that is
    ' converted to a value and then divided by 3600.
    seconds = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "'") + _
            2, Len(Degree_Deg) - InStr(1, Degree_Deg, "'") - 2)) _
            / 3600
   Convert_Decimal = degrees + minutes + seconds
End Function

Чтобы использовать, просто наберите =Convert_Decimal("36°34"44'"), и вы получите результат 36,58.

Кроме того, если вам интересно, вы можете взглянуть на другой подход , который использует преимущества функций формата времени.

Надеюсь, что это поможет.

Некоторые дополнительные сведения о MSDN:

http://support.microsoft.com/kb/73023

http://support.microsoft.com/kb/213449

http://www.cpearson.com/excel/LatLong.aspx

0 голосов
/ 16 ноября 2011

Если ваши строки заполнены нулями (например, 06°04"04'), тогда используйте

=VALUE(LEFT(A1,2))+VALUE(MID(A1,4,2))/60+VALUE(MID(A1,7,2))/3600

Если нет или неуверен (например, 6°4"4'), тогда используйте

=VALUE(LEFT(A1,FIND("°",A1)-1)) + 
 VALUE(MID(A1,FIND("°",A1)+1,FIND("""",A1)-FIND("°",A1)-1))/60 + 
 VALUE(MID(A1,FIND("""",A1)+1,FIND("'",A1)-FIND("""",A1)-1))/3600
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...