Cálculos em termos de graus minutos segundos no excel, libreoffice / openoffice ou qualquer outra planilha livre

5

Meu pai entrou na astrologia, então ele precisa fazer cálculos para isso - e a maioria dos livros usa os Graus Minutos Segundos nonmenclature - existe alguma maneira de definir excel ou open office calc para lidar com cálculos em termos de DMS?

Editar: estamos usando o excel 2007

Edit2: Eu suspeito que a instalação do office / libre aberto seja uma opção, e pode não haver uma maneira do MS Excel de fazê-lo - então eu estou ampliando a questão, o Office 2007 é o preferido, mas qualquer planilha comum do Windows fará

Editar 3: Aparentemente, o uso do tempo como uma solução alternativa não permite a multiplicação - o que é necessário neste caso

    
por Journeyman Geek 11.05.2011 / 08:46

3 respostas

2

Fora da caixa O Excel não tem suporte para o que você está pedindo. Pode haver plugins em torno dessa ajuda com isso, mas, em vez disso, gostaria de oferecer um pouco de solução:

Você pode formatar números como o tempo para obter o Excel (e provavelmente o OOo e o LibreOffice) para exibir e calcular valores que você precisa com as divisões, bases, etc.

Usando o seguinte formato personalizado (o Excel, OOo e LibreOffice terão equivalentes, mas eu não tenho uma cópia para testar) os renderizará com os símbolos corretos também. O [h] evita que a hora seja zerada quando atinge 24, permitindo ângulos arbitrariamente grandes. Se você quiser liderar o zero, apenas duplique cada letra.

[h]º m' s\"

Estes podem ser adicionados juntos, etc, conforme necessário (afinal, são apenas números abaixo). No entanto, isso só funcionará se o resultado final for positivo; O Excel não renderizará tempos negativos .

Se você precisar converter esse valor em um valor de graus decimais, basta multiplicar por 24, porque um "dia" no formato de hora do Excel tem um valor de 1 (uma hora é 1/24, etc) .

Apenas certifique-se de que a célula em que esta fórmula entra tenha formatação normal - não tempo:

=A1*24

Como alternativa, você também pode extrair componentes específicos do valor de tempo usando o seguinte:

=INT(A1*24)    returns degrees
=MINUTE(A1)    returns minutes
=SECOND(A1)    returns seconds
    
por 11.05.2011 / 10:01
1

Aqui estão duas macros que fazem o trabalho da minha planilha astronômica. Os valores de direção (graus, min, seg) são formatados como texto. Se a célula A1 contiver -77° 26' 09.5" , posso inserir =DMS2Real(A1) na célula A2, que exibirá -77.4359722222 . =Real2DMS(A2) em A3 irá reverter a conversão.

Insira as funções de macro por meio de Ferramentas > Macros > Organizar Macros > LibreOffice Basic > Padrão (ou onde quer que você gostaria de armazená-los).

Observe que os graus decimais não são os valores radianos exigidos pelas funções trigonométricas.

' Convert degrees, minutes, seconds to a single real number and back. 

' Tested in LibreOffice Calc 5.1.6.2
' Based on  https://support.microsoft.com/en-gb/help/213449/how-to-convert-degrees-minutes-seconds-angles-to-or-from-decimal-angle


Function DMS2Real(Degree_DMS As String) As Double  ' -77° 26' 09.5" -> -77.4359722222
    ' use double precision floating-point.
    Dim degrees As Double
    Dim minutes As Double
    Dim seconds As Double
    Dim sign As Integer

    ' Set degree to value appearing before "°" in argument string.
    degrees = Val(Left(Degree_DMS, InStr(1, Degree_DMS, "°") - 1))

    ' Only positive value is computed. Sign of result is changed in final statement
    '  i.e. -7° 8' 9"  means (-7 - 8/60 - 9/3600)
    If degrees < 0 Then
        degrees = degrees * -1
        sign = -1
    Else 
        sign = 1
    End If

    ' 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 = Val(Mid(Degree_DMS, InStr(1, Degree_DMS, "°") + 2, InStr(1, Degree_DMS, "'") - InStr(1, Degree_DMS, "°") - 2)) / 60
    ' Set seconds to the number to the right of "'" that is
    ' converted to a value and then divided by 3600.
    seconds = Val(Mid(Degree_DMS, InStr(1, Degree_DMS, "'") + 2, Len(Degree_DMS) - InStr(1, Degree_DMS, "'") - 2)) / 3600
    DMS2Real =  sign * (degrees + minutes + seconds)
End Function


Function  Real2DMS(dms)    ' -77.4359722222 -> -77° 26' 9.5"
    DIM sign As String
    ' allow for negative values
    If dms < 0 Then
        dms = dms * -1
        sign = "-"
    Else 
        sign = " "
    End If

    'Set degree to Integer of Argument Passed
    Degrees = Int(dms)
    'Set minutes to 60 times the number to the right
    'of the decimal for the variable Decimal_Deg
    Minutes = (dms - 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.0")
    'Returns the Result of degree conversion
    '(for example, 10.46 = 10~ 27  ' 36")
    Real2DMS = sign & Degrees & "° " & Int(Minutes) & "' " & Seconds + Chr(34)
End Function

Sub Main
End Sub
    
por 24.09.2017 / 01:32
1

Não é possível dizer ao Excel para alternar entre radianos e graus ao usar funções como, por exemplo,

=SIN(DEGREES)

para que você tenha que fazer conversões explícitas em cada fórmula, por exemplo,

=SIN(RADIANS(DEGREES + MINUTES/60 + SECONDS/3600))

ou você poderia criar uma fórmula personalizada no VBA como

Function SinDMS(Deg As Double, Min As Double, Sec As Double) As Double

    SinDMS = Sin((3.1415 * 2 * (Deg + Min / 60 + Sec / 3600)) / 360)

End Function

(Mas será muito lento se houver muitos cálculos)

    
por 11.05.2011 / 09:58