Jak převést úhly stupňů/minut/sekund do nebo z desetinných úhlů v Excelu
Souhrn
Úhlová měření se běžně vyjadřují v jednotkách stupňů, minut a sekund (DMS). 1 stupeň se rovná 60 minutám a jedna minuta se rovná 60 sekundám. Pro zjednodušení některých matematických výpočtů můžete chtít vyjádřit úhlové měření ve stupních a desetinných zlomcích stupňů.
Tento článek obsahuje ukázkovou vlastní funkci, pomocí které můžete převést hodnotu stupně uloženou v desítkovém formátu na DMS uloženou v textovém formátu a ukázkovou funkci, která převede DMS na hodnotu stupně uloženou v desítkovém formátu.
Další informace
Společnost Microsoft poskytuje příklady programování pouze pro ilustraci, bez záruky vyjádřené nebo předpokládané, včetně, ale bez omezení, předpokládaných záruk obchodovatelnosti a/nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele.
Pokud máte omezené zkušenosti s programováním, můžete se obrátit na poradenské služby společnosti Microsoft. Další informace naleznete na webu společnosti Microsoft:
Poradenské služby Microsoftu – https://support.microsoft.com/gp/advisoryservice
Další informace o dostupných možnostech podpory a o tom, jak kontaktovat společnost Microsoft, naleznete v části https://support.microsoft.com.
Převod desetinných stupňů na stupně/minuty/sekundy
Následující vlastní funkce jazyka Microsoft Visual Basic for Applications přijímá úhel formátovaný jako desítkovou hodnotu a převádí jej na textovou hodnotu zobrazenou ve stupních, minutách a sekundách.
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
Chcete-li použít tuto funkci, vytvořte převodní vzorec, jako v následujícím příkladu:
Spusťte Excel a stisknutím ALT+F11 spusťte Visual Basic Editor.
V nabídce Vložit, klikněte na Modul.
Do listu modulu zadejte vzorový kód pro vlastní funkci Convert_Degree popsanou výše.
Stiskněte ALT+F11 pro návrat do Excelu.
Do buňky A1 zadejte 10,46.
Do buňky A2 zadejte vzorec: =Convert_Degree(A1)
Vzorec vrací 10°27'36"
Převod stupňů/minut/sekund na desetinné stupně
Následující vlastní funkce Microsoft Visual Basic for Applications přijímá textový řetězec stupňů, minut a sekund formátovaný přesně ve stejném formátu, jaký vrací funkce Convert_Degree (například 10° 27' 36") a převádí jej na úhel formátovaný jako desetinná hodnota. Toto je přesně opak vlastní funkce Convert_Degree.
Upozornění
Tato vlastní funkce selže, pokud argument Degree_Deg není ve formátu <degrees>° <minutes>' seconds>" <i v případě, že hodnota sekund je 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
Chcete-li použít tuto funkci, vytvořte převodní vzorec, jako v následujícím příkladu:
Spusťte Excel a stisknutím ALT+F11 spusťte Visual Basic Editor.
V nabídce Vložit, klikněte na Modul.
Do listu modulu zadejte vzorový kód pro vlastní funkci Convert_Decimal popsanou výše.
Stiskněte ALT+F11 pro návrat do Excelu.
Do buňky A1 zadejte následující vzorec:
=Convert_Decimal("10° 27' 36""")
Poznámka
Na konci argumentu tohoto vzorce musíte zadat tři uvozovky ("""), abyste měli zadány uvozovky pro sekundy a uvozovky pro textový řetězec. Odkaz na buňku nebude vyžadovat uvozovky.
Vzorec vrátí 10,46
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro