schau mal hier nach, dort werden Sie geholfen:
http://www.astroexcel.de/download.htm
Gruß
Holger
gib mir mal die Mondphasen von 2003, so nach dem Motto:
15.03.2003 1 (Voll)
22.03.2003 1/2
29.03.2003 0
.
.
.
und die genaue Phasendauer, ich glaube es sind 27,5 Tage von voll zu voll.
Ich könnte dann versuchen mit diese Werte als Sinuslinie darzustellen.
Gruß Heinz
Hier zwei Funktinen, die, auf ein Datum angewandt, die Mondphase zurückgeben.
Function Mondphase(Datum As Date) As String
Const SynodMonat As Double = 29.530588
Const SynodVollmond As Double = 105.6213922 'IstVollmondTag()
'Const SynodStart As Double = 113.0040392 'IstHalbmondTagAbnehmend()
Const SynodNeumond As Double = 120.3866862 'IstNeumondTag()
'Const SynodStart As Double = 127.7693332 'IstHalbmondTagZunehmend()
Dim OK As Boolean
Dim DatumDbl As Double
Dim DatumLng As Long
Dim DatumVollMond As Date
Dim DatumNeuMond As Date
Dim i As Long
If Year(Datum) > 1900 And Year(Datum) < 2100 Then
'Berechnung ob Vollmond oder nächster Vollmondtag
For i = 1 To 2470
DatumDbl = SynodVollmond + i * SynodMonat
DatumLng = Int(DatumDbl)
DatumVollMond = CDate(DatumLng)
If DatumVollMond = Datum Then
Mondphase = "Vollmond"
Exit Function
ElseIf DatumVollMond > Datum Then
Mondphase = "zunehmend"
Exit For
End If
Next i
'Berechnung ob Neumond oder nächster Neumondtag
For i = 1 To 2470
DatumDbl = SynodNeumond + i * SynodMonat
DatumLng = Int(DatumDbl)
DatumNeuMond = CDate(DatumLng)
If DatumNeuMond = Datum Then
Mondphase = "Neumond"
Exit Function
ElseIf DatumNeuMond > Datum Then
Exit For
End If
Next i
'Berechnung ob Neu- oder Vollmond näher
If DatumNeuMond < DatumVollMond Then
Mondphase = "abnehmend"
End If
End If
End Function
Function IstVollmondtag(Datum As Date) As Boolean
Const SynodMonat As Double = 29.530588
Const SynodStart As Double = 105.6213922 'IstVollmondTag()
'Const SynodStart As Double = 113.0040392 'IstHalbmondTagAbnehmend()
'Const SynodStart As Double = 120.3866862 'IstNeumondTag()
'Const SynodStart As Double = 127.7693332 'IstHalbmondTagZunehmend()
Dim OK As Boolean
Dim DatumDbl As Double
Dim DatumLng As Long
Dim DatumHilf As Date
Dim i As Long
If Year(Datum) > 1900 And Year(Datum) < 2100 Then
OK = False
For i = 1 To 2470
DatumDbl = SynodStart + i * SynodMonat
DatumLng = Int(DatumDbl)
DatumHilf = CDate(DatumLng)
If DatumHilf = Datum Then
OK = True
Exit For
End If
Next i
Else
OK = ""
End If
IstVollmondtag = OK
End Function
Code eingefügt mit: Excel Code Jeanie
Mit freundlichen Grüssen
Thomas Ramel
- MVP für MS-Excel -
hast du auch die genauen Uhrzeiten dazu?
Die Zeitabstände sind nicht gleich nur mit dem Datum.
7; 8; 8; 7 Tage für jedes Viertel.
Das war auch früher mein Problem bei dieser Geschichte, ich habe mir allerdings nie die Mühe gemacht weiter zu suchen.
Gruß Heinz
Hier die Sinuslinie:
In B10: 16.04.2003 12:00
In C10: =b10+180:00 (180:00 ist der Stundenabstand zwischen den Vierteln)
Formel kopieren
In B11 =SIN(B10*PI())*-1
Formel kopieren
Dann Diagramm mit diesen Werten mit benutzerdefinierten Linien; Weiche Linien; zeichnen lassen
Gruß Heinz
PS: Ich schicke dir die Mondphasenmappe
Um in Excel die Mondphasen zu berechnen, kannst du die folgende Mondphase berechnen Formel verwenden. Diese Formel gibt dir die Mondphase für ein bestimmtes Datum zurück:
ALT + F11
, um den VBA-Editor zu öffnen.Einfügen
> Modul
.Function Mondphase(Datum As Date) As String
Const SynodMonat As Double = 29.530588
Const SynodVollmond As Double = 105.6213922
Const SynodNeumond As Double = 120.3866862
Dim OK As Boolean
Dim DatumDbl As Double
Dim DatumLng As Long
Dim DatumVollMond As Date
Dim DatumNeuMond As Date
Dim i As Long
If Year(Datum) > 1900 And Year(Datum) < 2100 Then
For i = 1 To 2470
DatumDbl = SynodVollmond + i * SynodMonat
DatumLng = Int(DatumDbl)
DatumVollMond = CDate(DatumLng)
If DatumVollMond = Datum Then
Mondphase = "Vollmond"
Exit Function
ElseIf DatumVollMond > Datum Then
Mondphase = "zunehmend"
Exit For
End If
Next i
For i = 1 To 2470
DatumDbl = SynodNeumond + i * SynodMonat
DatumLng = Int(DatumDbl)
DatumNeuMond = CDate(DatumLng)
If DatumNeuMond = Datum Then
Mondphase = "Neumond"
Exit Function
ElseIf DatumNeuMond > Datum Then
Exit For
End If
Next i
If DatumNeuMond < DatumVollMond Then
Mondphase = "abnehmend"
End If
End If
End Function
16.04.2003
.=Mondphase(A1)
, wobei A1
die Zelle mit dem Datum ist.Fehler: „Fehler beim Kompilieren“
Lösung: Stelle sicher, dass der VBA-Code korrekt kopiert wurde und keine Syntaxfehler enthält.
Fehler: „#NAME?“ in Excel
Lösung: Überprüfe, ob du die Funktion korrekt in einer Zelle aufrufst und dass die Makros in deiner Excel-Instanz aktiviert sind.
Eine alternative Möglichkeit, die Mondphasen zu berechnen, ist die Erstellung einer Mondphasen Tabelle. Du kannst eine Tabelle mit festen Daten der Mondphasen (Vollmond, Neumond, etc.) erstellen und diese dann manuell aktualisieren.
SVERWEIS
, um die Mondphase für ein bestimmtes Datum zu finden.Hier ist ein Beispiel für die Verwendung der Mondphasen berechnen Formel Excel:
Datum | Mondphase |
---|---|
16.04.2003 | =Mondphase(A2) |
23.04.2003 | =Mondphase(A3) |
01.05.2003 | =Mondphase(A4) |
09.05.2003 | =Mondphase(A5) |
16.05.2003 | =Mondphase(A6) |
Du kannst diese Daten in Excel eingeben und die Mondphasen automatisch berechnen lassen.
1. Wie kann ich die Mondphasen für andere Jahre berechnen?
Du kannst die oben erwähnte Formel für jedes Datum zwischen 1900 und 2100 verwenden, indem du einfach ein anderes Datum eingibst.
2. Gibt es eine Möglichkeit, die Mondphasen automatisch für ein ganzes Jahr zu berechnen?
Ja, du kannst eine Schleife in VBA programmieren, die alle Daten eines Jahres durchläuft und die Mondphasen für jedes Datum berechnet.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen