Partilhar via


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

Resumo

As medições angulares são normalmente expressas em unidades de graus, minutos e segundos (DMS). 1 grau é igual a 60 minutos e um minuto equivale a 60 segundos. Para simplificar alguns cálculos matemáticos, poderá querer expressar medições angulares em graus e frações decimais de graus.

Este artigo contém uma função personalizada de exemplo que pode utilizar para converter um valor de grau armazenado em formato decimal, para DMS armazenado em formato de texto e uma função de exemplo que converte DMS num valor de grau armazenado em formato decimal.

Mais Informações

A Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita, incluindo, mas não se limitando a, as garantias implícitas de comercialização e/ou aptidão para um propósito específico. Este artigo pressupõe que está familiarizado com a linguagem de programação que está a ser demonstrada e com as ferramentas utilizadas para criar e depurar procedimentos. Os profissionais de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para fornecer funcionalidades adicionais ou criar procedimentos para satisfazer as suas necessidades específicas.

Se tiver experiência limitada de programação, pode querer entrar em contacto com um Microsoft Advisory Services. Para obter mais informações, visite o site da Microsoft:

Microsoft Advisory Services - https://support.microsoft.com/gp/advisoryservice

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

Converter Graus Decimais em Graus/Minutos/Segundos

A seguinte função personalizada Microsoft Visual Basic for Applications aceita um ângulo formatado como um valor decimal e converte-o num valor de texto apresentado 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 utilizar esta função, crie uma fórmula de conversão, como no exemplo seguinte:

  1. Abra o Excel e prima ALT+F11 para iniciar o Visual Basic Editor.

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

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

  4. Prima Alt+F11 para regressar ao Excel.

  5. Na célula A1 escreva 10,46.

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

    A fórmula apresenta 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 formatada no mesmo formato apresentado pela função Convert_Degree (por exemplo, 10° 27' 36") e converte-a num ângulo formatado como um valor decimal. Este é exatamente o inverso da função personalizada Convert_Degree.

Aviso

Esta função personalizada falha 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 utilizar esta função, crie uma fórmula de conversão, como no exemplo seguinte:

  1. Abra o Excel e prima ALT+F11 para iniciar o Visual Basic Editor.

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

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

  4. Prima Alt+F11 para regressar ao Excel.

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

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

    Nota

    Tem de escrever três aspas ("") no final do argumento desta fórmula para equilibrar as aspas para os segundos e as aspas para a cadeia de texto. Uma referência de célula não necessitará de uma aspa.

  6. Consequentemente, a fórmula apresenta 10,46