次数/分/秒の角度を 10 進数の角度に変換するExcel

注意

Office 365 用リソース は、 エンタープライズ向け Microsoft 365 アプリに名前変更されています。 この変更の詳細については、 このブログの投稿を参照してください。

概要

Angular測定値は、通常、度、分、秒 (DMS) の単位で表されます。 1 度は 60 分、1 分は 60 秒です。 一部の数学的計算を簡略化するために、角度の測定値を度数および小数部で表す必要があります。

この記事では、10 進形式で格納された度の値をテキスト形式で格納された DMS に変換するために使用できるサンプル のカスタム関数と、DMS を 10 進形式で格納された度の値に変換するサンプル関数について説明します。

詳細情報

Microsoft は、明示または黙示を問わず、商品性および/または特定の目的への適性に関する黙示的な保証を含むがこれらに限定されない、説明のみを目的としてプログラミング例を提供しています。 この記事では、説明されているプログラミング言語と、プロシージャの作成とデバッグに使用されるツールについて理解している必要があります。 Microsoft サポート担当者は、特定の手順の機能を説明するのに役立ちますが、これらの例を変更して、追加の機能を提供したり、特定のニーズを満たす手順を構築したりは行ないます。

プログラミングエクスペリエンスが制限されている場合は、Microsoft アドバイザリ サービスに問い合わせ先を指定できます。 詳細については、Microsoft Web サイトを参照してください。

Microsoft アドバイザリ サービス - https://support.microsoft.com/gp/advisoryservice

使用可能なサポート オプションと Microsoft に連絡する方法の詳細については、を参照してください https://support.microsoft.com

10 進度を度/分/秒に変換する

次の Microsoft Visual Basic for Applicationsカスタム関数は、10 進値として書式設定された角度を受け入れ、度、分、および秒で表示されるテキスト値に変換します。

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

この関数を使用するには、次の例のように変換式を作成します。

  1. [Excelを開始し、ALT + F11 キーを押して、エディターをVisual Basicします。

  2. [挿入] メニューの [モジュール] をクリックします。

  3. 上記のカスタム関数Convert_Degreeサンプル コードをモジュール シートに入力します。

  4. Alt + F11 キーを押して excel に戻します。

  5. セル A1 に 10.46 と入力します。

  6. セル A2 に次の式を入力します。=Convert_Degree(A1)

    数式は 10°27'36" を返します。

度/分/秒を 10 進度に変換する

次の Microsoft Visual Basic for Applications カスタム関数は、Convert_Degree 関数が返すのとまったく同じ形式 (たとえば、10° 27' 36") で書式設定された、度、分、および秒のテキスト文字列を受け入れ、10 進値として書式設定された角度に変換します。 これは、カスタム関数のConvert_Degree逆です。

警告

秒の値が 0 の場合Degree_Deg引数が形式 ° ' " ではない場合、このカスタム <degrees> <minutes> <seconds> 関数は失敗します。

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

この関数を使用するには、次の例のように変換式を作成します。

  1. [Excelを開始し、ALT + F11 キーを押して、[エディター] Visual Basicします。

  2. [挿入] メニューの [モジュール] をクリックします。

  3. 上記のカスタム関数Convert_Decimalサンプル コードをモジュール シートに入力します。

  4. Alt + F11 キーを押して excel に戻します。

  5. セル A1 に次の数式を入力します。

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

    注意

    この数式の引数の末尾に 3 つの二重引用符 ("") を入力して、秒の二重引用符とテキスト文字列の二重引用符のバランスを取る必要があります。 セル参照には引用符は必要ではありません。

  6. 数式は 10.46 を返します。