Graden/minuten/secondenhoeken converteren naar of van decimale hoeken in Excel

Samenvatting

Hoekmetingen worden gewoonlijk uitgedrukt in graden, minuten en seconden (DMS). 1 graad is gelijk aan 60 minuten en één minuut is gelijk aan 60 seconden. Om sommige wiskundige berekeningen te vereenvoudigen, kunt u hoekmetingen uitdrukken in graden en decimale breuken van graden.

Dit artikel bevat een voorbeeld van een aangepaste functie die u kunt gebruiken om een gradenwaarde te converteren die is opgeslagen in een decimale notatie, naar DMS die is opgeslagen in een tekstopmaak en een voorbeeldfunctie waarmee DMS wordt geconverteerd naar een gradenwaarde die is opgeslagen in een decimale notatie.

Meer informatie

Microsoft biedt programmeervoorbeelden alleen ter illustratie, zonder expliciete of impliciete garantie, inclusief, maar niet beperkt tot, de impliciete garanties van verkoopbaarheid en / of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal die wordt gedemonstreerd en met de tools die worden gebruikt om procedures te maken en fouten op te lossen. Microsoft-ondersteuningsprofessionals kunnen helpen bij het uitleggen van de functionaliteit van een bepaalde procedure, maar zij zullen deze voorbeelden niet wijzigen om extra functionaliteit te bieden of procedures samenstellen die aan uw specifieke behoeften voldoen.

Als u beperkte programmeerervaring heeft, kunt u contact opnemen met een Microsoft Advisory Services. Ga naar de Microsoft-website voor meer informatie:

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

Raadpleeg https://support.microsoft.comvoor meer informatie over de beschikbare ondersteuningsopties en hoe u contact kunt opnemen met Microsoft.

Decimale graden converteren naar graden/minuten/seconden

De volgende aangepaste functie van Microsoft Visual Basic for Applications accepteert een hoek die is opgemaakt als een decimale waarde en converteert deze naar een tekstwaarde die wordt weergegeven in graden, minuten en seconden.

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

Als u deze functie wilt gebruiken, maakt u een conversieformule, zoals in het volgende voorbeeld:

  1. Start Excel en druk op ALT+F11 om de Visual Basic Editor te starten.

  2. Klik op Module in het menu Invoegen.

  3. Voer de voorbeeldcode in voor de hierboven beschreven aangepaste functie Convert_Degree in het moduleblad.

  4. Druk op ALT+F11 om terug te keren naar Excel.

  5. Typ 10,46 in cel A1.

  6. Typ in cel A2 de formule: =Convert_Degree(A1)

    De formule retourneert 10°27'36"

Graden/minuten/seconden converteren naar decimale graden

De volgende aangepaste Microsoft Visual Basic for Applications-functie accepteert een tekenreeks met graden, minuten en seconden die zijn opgemaakt in exact dezelfde notatie die de functie Convert_Degree retourneert (bijvoorbeeld 10° 27' 36") en converteert deze naar een hoek die is opgemaakt als een decimale waarde. Dit is precies het omgekeerde van de aangepaste functie Convert_Degree.

Waarschuwing

Deze aangepaste functie mislukt als het argument Degree_Deg niet de notatie <graden>° <minuten>< seconden>' heeft, zelfs als de waarde van seconden 0 is.

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

Als u deze functie wilt gebruiken, maakt u een conversieformule, zoals in het volgende voorbeeld:

  1. Start Excel en druk op ALT+F11 om de Visual Basic Editor te starten.

  2. Klik op Module in het menu Invoegen.

  3. Voer de voorbeeldcode in voor de hierboven beschreven aangepaste functie Convert_Decimal in het moduleblad.

  4. Druk op ALT+F11 om terug te keren naar Excel.

  5. Typ de volgende formule in cel A1:

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

    Opmerking

    U moet drie aanhalingstekens (""") typen aan het einde van het argument van deze formule om het aanhalingsteken voor de seconden en het aanhalingsteken voor de tekenreeks in evenwicht te brengen. Voor een celverwijzing is geen aanhalingsteken vereist.

  6. De formule retourneert 10,46