Slik konverterer du vinkler for grader/minutter/sekunder til eller fra desimalvinkler i Excel

Sammendrag

Vinkelmålinger uttrykkes vanligvis i enheter med grader, minutter og sekunder (DMS). 1 grad er lik 60 minutter, og ett minutt er lik 60 sekunder. Hvis du vil forenkle noen matematiske beregninger, kan det være lurt å uttrykke vinkelmålinger i grader og desimalfraksjoner av grader.

Denne artikkelen inneholder en egendefinert eksempelfunksjon som du kan bruke til å konvertere en graderingsverdi som er lagret i desimalformat, til DMS lagret i tekstformat, og en eksempelfunksjon som konverterer DMS til en gradverdi som er lagret i desimalformat.

Mer informasjon

Microsoft gir bare programmeringseksempler for illustrasjon, uten garanti, enten uttrykt eller underforstått, inkludert, men ikke begrenset til, de underforståtte garantiene for salgbarhet og/eller egnethet for et bestemt formål. Denne artikkelen forutsetter at du er kjent med programmeringsspråket som blir demonstrert og verktøyene som brukes til å opprette og feilsøke prosedyrer. Microsoft-kundestøtteteknikere kan hjelpe til å forklare funksjonaliteten til en bestemt prosedyre, men de vil ikke endre disse eksemplene for å gi ekstra funksjonalitet eller konstruere prosedyrer for å dekke dine spesifikke behov.

Hvis du har begrenset programmeringserfaring, kan det være lurt å kontakte Microsoft Advisory Services. Hvis du vil ha mer informasjon, kan du gå til Microsoft-nettstedet:

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

Hvis du vil ha mer informasjon om støttealternativene som er tilgjengelige og om hvordan du kontakter Microsoft, kan du se https://support.microsoft.com.

Konvertere desimalgrader til grader/minutter/sekunder

Følgende egendefinerte Microsoft Visual Basic for Applications-funksjon godtar en vinkel formatert som en desimalverdi og konverterer den til en tekstverdi som vises i grader, minutter og sekunder.

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

Hvis du vil bruke denne funksjonen, oppretter du en konverteringsformel, som i eksemplet nedenfor:

  1. Start Excel og trykk ALT+F11 for å starte Visual Basic Editor.

  2. I Sett inn-menyen klikker du Modul.

  3. Skriv inn eksempelkoden for den egendefinerte Convert_Degree-funksjonen som er beskrevet ovenfor, i modularket.

  4. Trykk ALT+F11 for å gå tilbake til Excel.

  5. Skriv inn 10,46 i celle A1.

  6. Skriv inn formelen i celle A2: =Convert_Degree(A1)

    Formelen returnerer 10°27'36"

Konvertere grader/minutter/sekunder til desimalgrader

Følgende egendefinerte Microsoft Visual Basic for Applications-funksjon godtar en tekststreng med grader, minutter og sekunder formatert i nøyaktig samme format som Convert_Degree-funksjonen returnerer (for eksempel 10° 27' 36") og konverterer den til en vinkel formatert som en desimalverdi. Dette er nøyaktig det motsatte av den egendefinerte Convert_Degree-funksjonen.

Advarsel

Denne egendefinerte funksjonen mislykkes hvis Degree_Deg-argumentet ikke er i formatet <grader>° <minutter>< sekunder>" selv om sekundersverdien er 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

Hvis du vil bruke denne funksjonen, oppretter du en konverteringsformel, som i eksemplet nedenfor:

  1. Start Excel og trykk ALT+F11 for å Visual Basic Editor.

  2. I Sett inn-menyen klikker du Modul.

  3. Skriv inn eksempelkoden for den egendefinerte Convert_Decimal-funksjonen som er beskrevet ovenfor, i modularket.

  4. Trykk ALT+F11 for å gå tilbake til Excel.

  5. Skriv inn følgende formel i celle A1:

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

    Obs!

    Du må skrive inn tre anførselstegn (""") på slutten av argumentet i denne formelen for å balansere anførselstegnet for sekundene og anførselstegnet for tekststrengen. En cellereferanse krever ikke et anførselstegn.

  6. Formelen returnerer 10.46