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:
Uruchom program Excel i naciśnij klawisze ALT+F11, aby uruchomić edytor języka Visual Basic.
W menu Wstaw kliknij polecenie Moduł.
Wprowadź przykładowy kod funkcji niestandardowej Convert_Degree opisanej powyżej w arkuszu modułu.
Naciśnij klawisze ALT+F11, aby wrócić do programu Excel.
W komórce A1 wpisz 10.46.
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:
Uruchom program Excel i naciśnij klawisze ALT+F11, aby uruchomić Edytor Visual Basic.
W menu Wstaw kliknij polecenie Moduł.
Wprowadź przykładowy kod funkcji niestandardowej Convert_Decimal opisanej powyżej w arkuszu modułów.
Naciśnij klawisze ALT+F11, aby wrócić do programu Excel.
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.
Ta formuła zwraca wartość 10.46
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla