Come convertire gli angoli espressi in gradi/primi/secondi in o da angoli decimali in Excel

Riepilogo

Le unità di misura angolari sono comunemente espresse in unità di gradi, primi e secondi (DMS). 1 grado equivale a 60 primi e un primo equivale a 60 secondi. Per semplificare alcuni calcoli matematici, è possibile esprimere le unità di misura angolari in gradi e frazioni decimali di gradi.

Questo articolo contiene una funzione personalizzata di esempio che è possibile usare per convertire un valore espresso in gradi, archiviato in formato decimale, in un valore espresso in gradi/primi/secondi, archiviato nel formato di testo. Contiene inoltre una funzione di esempio per convertire un valore espresso in gradi/primi/secondi in un valore in gradi, archiviato in formato decimale.

Ulteriori informazioni

Microsoft fornisce esempi di programmazione solo a scopo illustrativo, senza alcuna garanzia espressa o implicita, comprese, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. I tecnici Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare procedura, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare procedure atte a soddisfare specifiche esigenze.

Se si dispone di un'esperienza di programmazione limitata, è possibile contattare un Microsoft Certified Partner o Microsoft Advisory Services. Per ulteriori informazioni, visitare il seguente sito Web Microsoft:

Servizi di consulenza Microsoft - https://support.microsoft.com/gp/advisoryservice

Per ulteriori informazioni sulle opzioni di supporto disponibili e su come contattare Microsoft, consultare https://support.microsoft.com.

Conversione di gradi decimali in gradi/primi/secondi

La seguente funzione personalizzata di Microsoft Visual Basic, Applications Edition accetta un angolo formattato come valore decimale e lo converte in un valore di testo visualizzato in gradi, primi e secondi.

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

Per usare questa funzione, creare una formula di conversione come nell'esempio seguente:

  1. Avviare Excel e premere ALT+F11 per avviare Visual Basic Editor.

  2. Nel menu Inserisci, fare clic su Modulo.

  3. Immettere il codice di esempio per la funzione personalizzata Convert_Degree descritta in precedenza nel foglio del modulo.

  4. Premere ALT+F11 per tornare a Excel.

  5. Nella cella A1 digitare 10,46.

  6. Nella cella A2 digitare la formula: =Convert_Degree(A1)

    La formula restituisce 10° 27' 36"

Conversione di gradi/primi/secondi in gradi decimali

La seguente funzione personalizzata di Microsoft Visual Basic, Applications Edition accetta una stringa di testo di gradi, primi e secondi formattata nello stesso formato restituito dalla funzione Convert_Degree (ad esempio, 10° 27' 36") e la converte in un angolo formattato come valore decimale. Questo corrisponde all'inverso della funzione personalizzata Convert_Degree.

Avviso

Questa funzione personalizzata non riesce se l'argomento Degree_Deg non è nel formato <gradi>° <minuti>' <secondi>" anche se il valore dei secondi è 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

Per usare questa funzione, creare una formula di conversione come nell'esempio seguente:

  1. Avviare Excel e premere ALT+F11 per avviare Visual Basic Editor.

  2. Nel menu Inserisci, fare clic su Modulo.

  3. Immettere il codice di esempio per la funzione personalizzata Convert_Decimal descritta in precedenza nel foglio del modulo.

  4. Premere ALT+F11 per tornare a Excel.

  5. Nella cella A1 digitare la formula seguente:

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

    Nota

    È necessario digitare tre virgolette (""") alla fine dell'argomento della formula per bilanciare le virgolette per i secondi e quelle per la stringa di testo. Un riferimento di cella non richiederà virgolette.

  6. La formula restituisce 10,46