Jak przeliczyć kąty w stopniach/minutach/sekundach na lub z kątów dziesiętnych w programie Excel?

Podsumowanie

Pomiary kątowe są zwykle wyrażane 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 wyrazić pomiary kątowe w stopniach i ułamkach dziesiętnych stopni.

Ten artykuł zawiera przykładową funkcję niestandardową, za pomocą której można przeliczyć wartość stopnia przechowywaną w formacie dziesiętnym, na wartość DMS przechowywaną w formacie tekstowym oraz przykładową funkcję, która przelicza wartość DMS na wartość stopnia przechowywaną w formacie dziesiętnym.

Więcej informacji

Firma Microsoft podaje przykłady programowania wyłącznie dla ilustracji, bez gwarancji wyrażonej lub dorozumianej, w tym między innymi dorozumianych gwarancji przydatności handlowej i/lub przydatności do określonego celu. W tym artykule zakłada się, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do procedur tworzenia i debugowania. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnych funkcji i konstruować nowych procedur w celu dostosowania ich do określonych potrzeb użytkownika.

Jeśli masz niewielkie doświadczenie w programowaniu, możesz skontaktować się z certyfikowanym partnerem firmy Microsoft lub skorzystać z usług doradczych firmy Microsoft. Aby uzyskać więcej informacji, odwiedź następującą witrynę firmy Microsoft w sieci Web:

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

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

Przeliczanie stopni dziesiętnych na stopnie/minuty/sekundy

Poniższa funkcja niestandardowa programu Visual Basic for Applications firmy Microsoft akceptuje kąt sformatowany jako wartość dziesiętną i przelicza ją 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 języka Visual Basic.

  2. W menu Wstaw kliknij polecenie Moduł.

  3. Wprowadź przykładowy kod funkcji niestandardowej Convert_Degree 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"

Przeliczanie stopni/minut/sekund na stopnie dziesiętne

Poniższa funkcja niestandardowa programu Visual Basic for Applications firmy Microsoft akceptuje ciąg tekstowy stopni, minut i sekund sformatowany w dokładnie tym samym formacie, który zwraca funkcja Convert_Degree (na przykład 10° 27' 36") i przelicza go na kąt sformatowany jako wartość dziesiętną. Jest to dokładnie odwrotność funkcji niestandardowej Convert_Degree.

Ostrzeżenie

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

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 funkcji niestandardowej Convert_Decimal opisanej powyżej w arkuszu modułów.

  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

    Wymagane jest wpisanie trzech cudzysłowów (""") na końcu argumentu tej formuły w celu zrównoważenia cudzysłowu dla sekund i cudzysłowu dla ciągu tekstowego. Odwołanie do komórki nie będzie wymagać cudzysłów.

  6. Ta formuła zwraca wartość 10.46