Berechnungen in Grad, Minuten, Sekunden in Excel, Libreoffice / Openoffice oder einer anderen kostenlosen Tabelle

15105
Journeyman Geek

Mein Vater hat sich mit Astrologie befasst, also muss er Berechnungen dafür durchführen - und die meisten Bücher verwenden die Nicht-Dubletten-Minuten-Klasse. Gibt es eine Möglichkeit, Excel oder Open Office-Berechnungen für Berechnungen in Bezug auf DMS festzulegen ?

Bearbeiten: Wir verwenden derzeit Excel 2007

Edit2: Ich vermute, Open Office / Libre Office zu installieren, wird eine Option sein, und es gibt möglicherweise keine MS Excel-Methode. Ich erweitere die Frage, Office 2007 wird bevorzugt, aber so ziemlich jede gängige Windows-Tabelle

Edit 3: Die Verwendung von Zeit als Workaround lässt wahrscheinlich keine Multiplikation zu, die in diesem Fall erforderlich ist

5
bearbeitet, um die Version hinzuzufügen Journeyman Geek vor 13 Jahren 0
Das sieht nicht hoffnungsvoll aus, http://social.technet.microsoft.com/Forums/en-US/excel/thread/a4388c40-5ea8-4944-9626-708c28389e7d/ Tog vor 13 Jahren 0
bearbeitet, um OOo oder Libre Office als Optionen hinzuzufügen, und dass wir die fraglichen Werte multiplizieren müssen Journeyman Geek vor 13 Jahren 0

3 Antworten auf die Frage

2
DMA57361

Excel bietet keine Unterstützung für das, was Sie fragen. Möglicherweise gibt es Plugins um diese Hilfe, aber ich möchte stattdessen ein wenig Abhilfe schaffen:

Sie können Zahlen als Zeit formatieren, damit Excel (und wahrscheinlich OOo und LibreOffice) Werte anzeigen und berechnen kann, die Sie mit den richtigen Unterteilungen, Basen usw. benötigen.

Wenn Sie das folgende benutzerdefinierte Format verwenden (Excel, OOo und LibreOffice werden Entsprechungen enthalten, aber ich habe keine Kopie zum Testen zur Hand), werden diese ebenfalls mit den richtigen Symbolen gerendert. Das [h]verhindert, dass die Stunde auf Null zurückgesetzt wird, wenn 24 erreicht wird, und ermöglicht beliebig große Winkel. Wenn Sie Nullen führen möchten, verdoppeln Sie einfach jeden Buchstaben.

[h]º m' s\" 

Diese können nach Bedarf addiert werden usw. (es sind immer nur Zahlen darunter). Dies funktioniert jedoch nur, wenn das Endergebnis positiv ist. Excel wird keine negativen Zeiten darstellen .

Wenn Sie diesen Wert in einen Dezimalgrad umwandeln müssen, müssen Sie nur mit 24 multiplizieren, da ein "Tag" im Excel-Zeitformat den Wert 1 hat (eine Stunde ist also 1/24. Usw.).

Stellen Sie nur sicher, dass die Zelle, in die diese Formel geht, eine normale Formatierung hat - nicht die Zeit:

=A1*24 

Alternativ können Sie auch bestimmte Komponenten aus dem Zeitwert extrahieren, indem Sie Folgendes verwenden:

=INT(A1*24) returns degrees =MINUTE(A1) returns minutes =SECOND(A1) returns seconds 
anscheinend brauche ich sie auch, um sich zu vermehren. Journeyman Geek vor 13 Jahren 0
Ah, das ist, weil jeder Wert nicht wirklich sich selbst ist, sondern nur 1/4 von sich selbst, also wird "12º 0" 0 "" von Excel wirklich als "0,5" betrachtet. Versuchen Sie, das Endergebnis einer Multiplikation (von zwei Graden) zu multiplizieren Werte von "24", um dies zu korrigieren. Sie müssen diese Multiplikation nicht mit einem Scaler durchführen. DMA57361 vor 13 Jahren 0
1
grojo

Es gibt keine Möglichkeit, Excel mit Hilfe von Funktionen wie z. B. zwischen Radiant und Grad zu wechseln

=SIN(DEGREES) 

Sie müssen also entweder explizite Konvertierungen in jeder Formel vornehmen, z

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

oder Sie könnten eine benutzerdefinierte Formel in VBA erstellen

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 

(Aber es wird ziemlich langsam sein, wenn es viele Berechnungen gibt)

3.1415 ist weit weniger genau als 3.1416. Trotzdem ist es besser, [`WorksheetFunction.Pi`] zu verwenden (https://msdn.microsoft.com/en-us/vba/excel-vba/articles/worksheetfunction-pi-method-excel). phuclv vor 7 Jahren 0
1
Bruce Mayo

Here are two macros that do the job for my astronomy spreadsheet. The direction values (deg, min, sec) are formatted as text. If cell A1 contains -77° 26' 09.5", I can enter =DMS2Real(A1) in cell A2, which will then display -77.4359722222. =Real2DMS(A2) in A3 will reverse the conversion.

Enter the macro functions via Tools > Macros > Organize Macros > LibreOffice Basic > Standard (or wherever you would like to store them).

Note that decimal degrees are not the radian values required by trig functions.

' 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