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:
Start Excel og trykk ALT+F11 for å starte Visual Basic Editor.
I Sett inn-menyen klikker du Modul.
Skriv inn eksempelkoden for den egendefinerte Convert_Degree-funksjonen som er beskrevet ovenfor, i modularket.
Trykk ALT+F11 for å gå tilbake til Excel.
Skriv inn 10,46 i celle A1.
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:
Start Excel og trykk ALT+F11 for å Visual Basic Editor.
I Sett inn-menyen klikker du Modul.
Skriv inn eksempelkoden for den egendefinerte Convert_Decimal-funksjonen som er beskrevet ovenfor, i modularket.
Trykk ALT+F11 for å gå tilbake til Excel.
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.
Formelen returnerer 10.46
Tilbakemeldinger
https://aka.ms/ContentUserFeedback.
Kommer snart: Gjennom 2024 faser vi ut GitHub Issues som tilbakemeldingsmekanisme for innhold, og erstatter det med et nytt system for tilbakemeldinger. Hvis du vil ha mer informasjon, kan du se:Send inn og vis tilbakemelding for