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:
Avviare Excel e premere ALT+F11 per avviare Visual Basic Editor.
Nel menu Inserisci, fare clic su Modulo.
Immettere il codice di esempio per la funzione personalizzata Convert_Degree descritta in precedenza nel foglio del modulo.
Premere ALT+F11 per tornare a Excel.
Nella cella A1 digitare 10,46.
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:
Avviare Excel e premere ALT+F11 per avviare Visual Basic Editor.
Nel menu Inserisci, fare clic su Modulo.
Immettere il codice di esempio per la funzione personalizzata Convert_Decimal descritta in precedenza nel foglio del modulo.
Premere ALT+F11 per tornare a Excel.
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.
La formula restituisce 10,46
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per