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:

  1. Spusťte Excel a stisknutím ALT+F11 spusťte Visual Basic Editor.

  2. V nabídce Vložit, klikněte na Modul.

  3. Do listu modulu zadejte vzorový kód pro vlastní funkci Convert_Degree popsanou výše.

  4. Stiskněte ALT+F11 pro návrat do Excelu.

  5. Do buňky A1 zadejte 10,46.

  6. 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:

  1. Spusťte Excel a stisknutím ALT+F11 spusťte Visual Basic Editor.

  2. V nabídce Vložit, klikněte na Modul.

  3. Do listu modulu zadejte vzorový kód pro vlastní funkci Convert_Decimal popsanou výše.

  4. Stiskněte ALT+F11 pro návrat do Excelu.

  5. 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.

  6. Vzorec vrátí 10,46