Så här konverterar du vinkeln för grader/minuter/sekunder till eller från decimalvinklar i Excel

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Sammanfattning

Vinkelmått uttrycks ofta i enheten för grader, minuter och sekunder (DMS). 1 grad motsvarar 60 minuter och en minut är lika med 60 sekunder. Om du vill förenkla vissa matematiska beräkningar kanske du vill uttrycka vinkelmått i grader och decimal decimaler av grader.

Den här artikeln innehåller en anpassad exempelfunktion som du kan använda för att konvertera ett gradvärde som lagrats i decimalform, till DMS som är lagrat i textformat och en exempelfunktion som konverterar DMS till ett gradvärde som lagrats i decimalform.

Mer information

Microsoft tillhandahåller programmeringsexempel endast för illustration, utan garantier som vare sig uttrycks eller underförstådda, inklusive, men inte begränsat till, underförstådda garantier om säljbarhet och/eller lämplighet för ett visst ändamål. Den här artikeln förutsätter att du är bekant med programmeringsspråket som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supportpersonal kan förklara funktionaliteten i en viss procedur, men de ändrar inte de här exemplen för att ge ytterligare funktioner eller skapa procedurer som uppfyller dina specifika behov.

Om programmeringsupplevelsen är begränsad kan du kontakta microsofts rådgivningstjänster. Mer information finns på Microsofts webbplats:

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

Mer information om tillgängliga supportalternativ och hur du kontaktar Microsoft finns i https://support.microsoft.com .

Konvertera decimala grader till grader/minuter/sekunder

Följande anpassade funktion i Microsoft Visual Basic for Applications accepterar en vinkel formaterad som ett decimalvärde och omvandlar den till ett textvärde som visas i grader, minuter och 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

Om du vill använda den här funktionen skapar du en konverteringsformel, som i följande exempel:

  1. Starta Excel och tryck på ALT +F11 för att starta Visual Basic-redigeraren.

  2. Klicka på Modul på Infoga-menyn.

  3. Ange exempelkoden för den anpassade Convert_Degree som beskrivs ovan i modulbladet.

  4. Tryck på ALT+F11 för att återgå till Excel.

  5. Skriv 10,46 i cell A1.

  6. Skriv formeln i cell A2: =Convert_Degree(A1)

    Formeln returnerar 10°27'36"

Konvertera grader/minuter/sekunder till decimalgrader

Följande anpassade funktion i Microsoft Visual Basic for Applications accepterar en textsträng med grader, minuter och sekunder som har formaterats i exakt samma format som Convert_Degree-funktionen returnerar (t.ex. 10° 27' 36") och omvandlar den till en vinkel formaterad som ett decimalvärde. Det här är exakt omvänd Convert_Degree anpassade funktionen.

Varning

Den här anpassade funktionen misslyckas Degree_Deg om argumentet värde inte är i formatet ° ' " även om <degrees> <minutes> sekunder är <seconds> 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.
    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

Om du vill använda den här funktionen skapar du en konverteringsformel, som i följande exempel:

  1. Starta Excel och tryck på ALT +F11 för att starta Visual Basic Editor.

  2. Klicka på Modul på Infoga-menyn.

  3. Ange exempelkoden för den anpassade Convert_Decimal som beskrivs ovan på modulbladet.

  4. Tryck på ALT+F11 för att återgå till Excel.

  5. Skriv följande formel i cell A1:

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

    Anteckning

    Du måste skriva tre citattecken (""") i slutet av argumentet för den här formeln för att balansera citattecknet för sekunderna och citattecknet för textsträngen. En cellreferens kräver inte ett citattecken.

  6. Formeln returnerar 10,46