Konvertieren von Grad-/Minuten-/Sekundenwinkeln in oder von Dezimalwinkeln in Excel

Zusammenfassung

Winkelmessungen werden häufig in Grad-, Minuten- und Sekundeneinheiten (DMS) ausgedrückt. 1 Grad entspricht 60 Minuten, und eine Minute entspricht 60 Sekunden. Um einige mathematische Berechnungen zu vereinfachen, sollten Sie Winkelmaße in Grad und Dezimalbrüchen von Grad ausdrücken.

Dieser Artikel enthält eine benutzerdefinierte Beispielfunktion, die Sie verwenden können, um einen im Dezimalformat gespeicherten Gradwert in DMS zu konvertieren, der im Textformat gespeichert ist, und eine Beispielfunktion, die DMS in einen Gradwert konvertiert, der im Dezimalformat gespeichert ist.

Weitere Informationen

Microsoft stellt Programmierbeispiele nur zur Veranschaulichung zur Verfügung, ohne ausdrückliche oder stillschweigende Garantie, einschließlich, aber nicht beschränkt auf die stillschweigenden Garantien der Marktgängigkeit und/oder Eignung für einen bestimmten Zweck. Dieser Artikel setzt voraus, dass Sie mit der zu demonstrierenden Programmiersprache und den Tools zum Erstellen und Debuggen von Prozeduren vertraut sind. Die Microsoft Support-Spezialisten können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, jedoch verändern sie diese Beispiele nicht in Bezug auf eine erweiterte Funktionalität, noch entwickeln sie Prozeduren, die auf Ihre besonderen Bedürfnisse zugeschnitten sind.

Wenn Sie nur über eingeschränkte Programmierkenntnisse verfügen, können Sie sich möglicherweise an einen Microsoft Certified Partner oder Microsoft Advisory Services wenden. Weitere Informationen hierzu finden Sie auf folgender Website von Microsoft:

Microsoft Advisory Services – https://support.microsoft.com/gp/advisoryservice

Weitere Informationen zu den verfügbaren Supportoptionen und zum Kontaktieren von Microsoft finden Sie unter https://support.microsoft.com.

Konvertieren von Dezimalgraden in Grad/Minuten/Sekunden

Die folgende benutzerdefinierte Microsoft Visual Basic for Applications-Funktion akzeptiert einen als Dezimalwert formatierten Winkel und konvertiert ihn in einen Textwert, der in Grad, Minuten und Sekunden angezeigt wird.

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

Um diese Funktion zu verwenden, erstellen Sie eine Konvertierungsformel, wie im folgenden Beispiel gezeigt:

  1. Drücken Sie die Tastenkombination [ALT]+[F11], um den Visual Basic-Editor zu starten.

  2. Klicken Sie im Menü „Einfügen“ auf „Modul“.

  3. Geben Sie den Beispielcode für die oben beschriebene benutzerdefinierte Funktion Convert_Degree ins Modulblatt ein.

  4. Drücken Sie [ALT]+[F11], um zu Excel zurückzukehren.

  5. Geben Sie in Zelle A1 „10.46“ ein.

  6. Geben Sie in Zelle A2 folgende Formel ein: =Convert_Degree(A1)

    Die Formel gibt 10°27'36" aus.

Konvertieren von Grad/Minuten/Sekunden in Dezimalgrade

Die folgende benutzerdefinierte Microsoft Visual Basic for Applications-Funktion akzeptiert eine Textzeichenfolge von Grad, Minuten und Sekunden, die genau im gleichen Format formatiert sind, das die Convert_Degree-Funktion zurückgibt (beispielsweise 10° 27' 36) und konvertiert sie in einen Winkel, der als Dezimalwert formatiert ist. Dies ist genau das Gegenteil der benutzerdefinierten Convert_Degree-Funktion.

Warnung

Diese benutzerdefinierte Funktion schlägt fehl, wenn das Argument Degree_Deg nicht im Format <Grad>° <Minuten>' <Sekunden>" ist, selbst wenn der Sekundenwert 0 ist.

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

Um diese Funktion zu verwenden, erstellen Sie eine Konvertierungsformel, wie im folgenden Beispiel gezeigt:

  1. Drücken Sie [ALT]+[F11], um den Visual Basic-Editor zu starten.

  2. Klicken Sie im Menü „Einfügen“ auf „Modul“.

  3. Geben Sie den Beispielcode für die oben beschriebene benutzerdefinierte Funktion Convert_Decimal ins Modulblatt ein.

  4. Drücken Sie [ALT]+[F11], um zu Excel zurückzukehren.

  5. Geben Sie in die Zelle A1 die folgende Formel ein:

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

    Hinweis

    Sie müssen drei Anführungszeichen (""") am Ende des Arguments dieser Formel eingeben, um das Anführungszeichen für die Sekunden und das Anführungszeichen für die Textzeichenfolge auszugleichen. Für einen Zellbezug ist kein Anführungszeichen erforderlich.

  6. Die Formel gibt „10,46“ zurück.