Jak konwertować stopnie/minuty/sekundy na kąty dziesiętne w programie Excel lub z tego kąta

Uwaga

Nazwa usługi Office 365 ProPlus została zmieniona na Aplikacje usługi Microsoft 365 dla przedsiębiorstw. Aby uzyskać więcej informacji na temat tej zmiany, przeczytaj ten wpis w blogu.

Podsumowanie

Pomiary angularskie są często wyrażone w jednostkach stopni, minut i sekund (DMS). 1 stopień to 60 minut, a jedna minuta to 60 sekund. Aby uprościć niektóre obliczenia matematyczne, możesz chcieć wyrazić wymiary angularzowe w stopniach i ułamkach dziesiętnych stopni.

Ten artykuł zawiera przykładową funkcję niestandardową, która umożliwia konwertowanie wartości stopni przechowywanych w formacie dziesiętnym na DMS przechowywanych w formacie tekstowym, oraz przykładową funkcję konwertującą DMS na wartość stopni przechowywaną w formacie dziesiętnym.

Więcej informacji

Firma Microsoft podaje przykłady programowania wyłącznie na ilustracji, bez gwarancji jawnych lub dorozumianych, w tym dorozumianych gwarancji przydatności handlowej i/lub przydatności do określonego celu. W tym artykule założono, że znasz język programowania, który jest pokazywany, oraz narzędzia używane do tworzenia i debugowania procedur. Pracownicy pomocy technicznej firmy Microsoft mogą pomóc w objaśnieniach funkcji określonej procedury, ale nie zmodyfikują tych przykładów, aby udostępnić dodatkowe funkcje lub skonstruować procedury w celu zaspokojenia konkretnych potrzeb.

Jeśli masz ograniczone środowisko programowania, możesz chcieć skontaktować się z doradcą firmy Microsoft. Aby uzyskać więcej informacji, odwiedź witrynę internetową firmy Microsoft:

Usługi doradcze firmy Microsoft — https://support.microsoft.com/gp/advisoryservice

Aby uzyskać więcej informacji na temat dostępnych opcji pomocy technicznej i sposobu kontaktowania się z firmą Microsoft, zobacz https://support.microsoft.com .

Konwertowanie stopni dziesiętnych na stopnie/minuty/sekundy

Następująca funkcja niestandardowa języka Microsoft Visual Basic for Applications przyjmuje kąt sformatowany jako wartość dziesiętna i konwertuje go na wartość tekstową wyświetlaną w stopniach, minutach i sekundach.

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

Aby użyć tej funkcji, utwórz formułę konwersji, jak w poniższym przykładzie:

  1. Uruchom program Excel i naciśnij klawisze ALT+F11, aby uruchomić edytor Visual Basic.

  2. W menu Wstaw kliknij polecenie Moduł.

  3. Wprowadź przykładowy kod Convert_Degree funkcji niestandardowej opisanej powyżej w arkuszu modułu.

  4. Naciśnij klawisze ALT+F11, aby wrócić do programu Excel.

  5. W komórce A1 wpisz 10,46.

  6. W komórce A2 wpisz formułę: =Convert_Degree(A1)

    Formuła zwraca wartość 10°27'36"

Konwertowanie stopni/minut/sekund na stopnie dziesiętne

Następująca funkcja niestandardowa języka Microsoft Visual Basic for Applications przyjmuje ciąg tekstowy o stopniach, minutach i sekundach sformatowany w takim samym formacie, jak funkcja Convert_Degree zwraca (na przykład 10° 27' 36") i konwertuje go na kąt sformatowany jako wartość dziesiętna. Jest to dokładnie odwrotna funkcja Convert_Degree niestandardowa.

Ostrzeżenie

Ta funkcja niestandardowa kończy się niepowodzeniem, Degree_Deg argument czasowy ma format ° ' ", nawet jeśli wartość <degrees> <minutes> sekund wynosi <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

Aby użyć tej funkcji, utwórz formułę konwersji, jak w poniższym przykładzie:

  1. Uruchom program Excel i naciśnij klawisze ALT+F11, aby uruchomić Edytor Visual Basic.

  2. W menu Wstaw kliknij polecenie Moduł.

  3. Wprowadź przykładowy kod Convert_Decimal funkcji niestandardowej opisanej powyżej w arkuszu modułu.

  4. Naciśnij klawisze ALT+F11, aby wrócić do programu Excel.

  5. W komórce A1 wpisz następującą formułę:

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

    Uwaga

    Aby zrównoważyć cudzysłów sekund i cudzysłów ciągu tekstowego, na końcu argumentu tej formuły należy wpisać trzy cudzysłowy ("""). Odwołanie do komórki nie wymaga cudzysłowu.

  6. Formuła zwraca wartość 10,46.