Share via


Como converter ângulos de graus/minutos/segundos para ou a partir de ângulos decimais no Excel

Resumo

Medidas angulares normalmente são expressas em unidades de graus, minutos e segundos (DMS). Um grau é igual a 60 minutos e um minuto é igual a 60 segundos. Para simplificar alguns cálculos matemáticos, é desejável que você expresse medições de ângulos em graus e frações decimais de graus.

Este artigo contém uma amostra de função personalizada que você pode usar para converter um valor em graus (armazenado em formato decimal) em DMS (armazenado em formato de texto) e também uma amostra de função que converte DMS em um valor em graus (armazenado em formato decimal).

Informações adicionais

A Microsoft fornece exemplos de programação apenas para fins ilustrativos, sem garantia explícita ou implícita, incluindo, mas sem se limitar a, garantias de comercialização e/ou adequação para uma finalidade específica. Este artigo pressupõe que você conhece a linguagem de programação demonstrada e as ferramentas usadas para criar e depurar os procedimentos. A equipe de suporte da Microsoft pode ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificará estes exemplos para fornecer funcionalidades adicionais ou construir procedimentos a fim de atender às necessidades específicas.

Se você tiver pouca experiência em programação, é aconselhável contatar o Microsoft Advisory Services. Para obter mais informações, acesso o site da Microsoft (em inglês):

Serviços de Consultoria da Microsoft – https://support.microsoft.com/gp/advisoryservice

Para obter mais informações sobre as opções de suporte disponíveis e sobre como contatar a Microsoft, confira https://support.microsoft.com.

Converter graus decimais em graus/minutos/segundos

A seguinte função personalizada do Microsoft Visual Basic for Applications aceita um ângulo formatado como um valor decimal e o converte em um valor de texto exibido em graus, minutos e segundos.

Function Convert_Degree(Decimal_Deg) As Variant
    With Application
        'Set degree to Integer of Argument Passed
        Degrees = Int(Decimal_Deg)
        'Set minutes to 60 times the number to the right
        'of the decimal for the variable Decimal_Deg
        Minutes = (Decimal_Deg - Degrees) * 60
        'Set seconds to 60 times the number to the right of the
        'decimal for the variable Minute
        Seconds = Format(((Minutes - Int(Minutes)) * 60), "0")
        'Returns the Result of degree conversion
        '(for example, 10.46 = 10~ 27  ' 36")
        Convert_Degree = " " & Degrees & "° " & Int(Minutes) & " ' " & Seconds + Chr(34)
    End With
End Function

Para usar esta função, crie uma fórmula de conversão, como no seguinte exemplo:

  1. Inicie o Excel e pressione ALT + F11 para iniciar o editor do Visual Basic.

  2. No menu Inserir, clique em Módulo.

  3. Insira o código de exemplo para a função personalizada Convert_Degree descrita acima na folha de módulo.

  4. Pressione ALT+F11 para retornar ao Excel.

  5. Na célula A1, digite 10.46.

  6. Na célula A2, digite a fórmula: =Convert_Degree(A1)

    A fórmula retorna 10°27'36"

Converter graus/minutos/segundos em graus decimais

A seguinte função personalizada do Microsoft Visual Basic for Applications aceita uma cadeia de texto de graus, minutos e segundos com o mesmo formato retornado pela função Convert_Degree (por exemplo, 10° 27' 36") e a converte em um ângulo formatado como um valor decimal. Isso é exatamente o inverso da função personalizada Convert_Degree.

Aviso

Haverá falha nesta função personalizada se o argumento Degree_Deg não estiver no formato <graus>° <minutos>' <segundos>", mesmo que o valor de segundos seja 0.

Function Convert_Decimal(Degree_Deg As String) As Double
    ' Declare the variables to be double precision floating-point

   Dim degrees As Double
   Dim minutes As Double
   Dim seconds As Double
   ' Set degree to value before "°" of Argument Passed.
   Degree_Deg = Replace(Degree_Deg, "~", "°")


   degrees = CDbl(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 = CDbl(Mid(Degree_Deg, InStr(1, Degree_Deg, "°") + 1, _
             InStr(1, Degree_Deg, "'") - InStr(1, Degree_Deg, "°") - 1)) / 60
   ' Set seconds to the number to the right of "'" that is
   ' converted to a value and then divided by 3600.
   seconds = CDbl(Mid(Degree_Deg, InStr(1, Degree_Deg, "'") + _
           1, Len(Degree_Deg) - InStr(1, Degree_Deg, "'") - 1)) / 3600

   Convert_Decimal = degrees + minutes + seconds

End Function

Para usar esta função, crie uma fórmula de conversão, como no seguinte exemplo:

  1. Inicie o Excel e pressione ALT + F11 para iniciar o Editor do Visual Basic.

  2. No menu Inserir, clique em Módulo.

  3. Insira o código de exemplo para a função personalizada Convert_Decimal descrita acima na folha de módulo.

  4. Pressione ALT+F11 para retornar ao Excel.

  5. Na célula A1, digite a seguinte fórmula:

    =Convert_Decimal("10° 27' 36""")

    Observação

    É necessário digitar três aspas (""") no final do argumento dessa fórmula para equilibrar as aspas de segundos e as aspas da cadeia de texto. Uma referência de célula não exigirão uma aspa.

  6. A fórmula retorna 10.46