Microsoft Excel

Herbers Excel/VBA-Archiv

Sonnenaufgang

Betrifft: Sonnenaufgang von: Thomas
Geschrieben am: 03.07.2006 19:06:18

hallo,

kann mir jemand helfen?

ich benötige eine formel, die mir anhand des datums den sonnenaufgang bwz. den sonnenuntergang errechnet.

danke für eure hilfe

gruss Thomas

  


Betrifft: AW: Sonnenaufgang von: K.Rola
Geschrieben am: 03.07.2006 19:13:47

Hallo,

das Datum reicht nicht, du brauchst zusätzlich die Zeitzone, die geografische Breite und Länge.

Gruß K.Rola


  


Betrifft: AW: Sonnenaufgang von: Thomas
Geschrieben am: 03.07.2006 19:26:02

hi K.Rola,

das sollte kein problem sein, die daten zu besorgen.
wenn ich die nun habe, kannste mir dann ne formel geben?

danke im voraus

gruss Thomas


  


Betrifft: AW: Sonnenaufgang von: K.Rola
Geschrieben am: 03.07.2006 19:46:03

Hallo,

hier solltest du das Gewünschte finden, falls nicht, nochmal melden.

http://www.astroexcel.de/vbexcel.htm

Gruß K.Rola


  


Betrifft: AW: Sonnenaufgang von: Bernd
Geschrieben am: 03.07.2006 19:46:42

hi thomas,

hier, habe ich auch aus dem forum.
autor ist mir leider nicht mehr bekannt.
erkläre dir die formel selbst ;)

 
 ABCD
1Länge10  
2Breite54  
3Tag03.07.2006  
4Tag des Jahres184  
5    
6 FormelFunktion 
7Zeit Sonnenaufgang03.07.2006 04:5403.07.2006 04:54 
8Zeit Sonnenuntergang03.07.2006 21:5303.07.2006 21:53 
9    
Formeln der Tabelle
B3 : =HEUTE()
B4 : =B3-DATUM(JAHR(B3);1;0)
B7 : =ToSommerWinterzeit($B$3+(12-(12*ARCCOS((SIN(-0,0145)-SIN($B$2*PI()/180)*SIN(0,40954*SIN(0,0172*(($B$3-DATUM(JAHR($B$3);1;0))-79,35))))/(COS($B$2*PI()/180)*COS(0,40954*SIN(0,0172*(($B$3-DATUM(JAHR($B$3);1;0))-79,35)))))/PI())-(-0,1752*SIN(0,03343*($B$3-DATUM(JAHR($B$3);1;0))+0,5474)-0,134*SIN(0,018234*($B$3-DATUM(JAHR($B$3);1;0))-0,1939))+(15-$B$1)*4/60)/24)
C7 : =ToSommerWinterzeit($B$3+Sonnenaufgang(B1;B2;B3))
B8 : =ToSommerWinterzeit($B$3+(12+(12*ARCCOS((SIN(-0,0145)-SIN($B$2*PI()/180)*SIN(0,40954*SIN(0,0172*(($B$3-DATUM(JAHR($B$3);1;0))-79,35))))/(COS($B$2*PI()/180)*COS(0,40954*SIN(0,0172*(($B$3-DATUM(JAHR($B$3);1;0))-79,35)))))/PI())-(-0,1752*SIN(0,03343*($B$3-DATUM(JAHR($B$3);1;0))+0,5474)-0,134*SIN(0,018234*($B$3-DATUM(JAHR($B$3);1;0))-0,1939))+(15-$B$1)*4/60)/24)
C8 : =ToSommerWinterzeit($B$3+Sonnenuntergang(B1;B2;B3))
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  


hier der code für die funktionen:
der code kommt vom selben autor wie die formel.
einfach in ein modul schreiben.

Option Explicit
Public
Function Sonnenaufgang( _
    Längengrad As Double, _
    Breitengrad As Double, _
    Datum As Date) As Date
Dim Deklination As Double, DiffWozMoz As Double
Dim Jahrestag As Double, H_aufgang As Double
Dim DiffMittag As Double, dummy As Double
Const Pi = 3.141592653
'Sonnenaufgang bei -50 Bogenminuten
H_aufgang = (-50 / 60) * Pi / 180
'Tag des Jahres
Jahrestag = Datum - DateSerial(Year(Datum), 1, 0)
Breitengrad = Breitengrad * Pi / 180
Längengrad = Längengrad * Pi / 180
'Breitengrad, über dem die Sonne Mittags senkrecht steht
Deklination = 0.40954 * Sin(0.0172 * (Jahrestag - 79.35))
'Differenz zum Mittag in Stunden berechnen
dummy = (Sin(H_aufgang) - Sin(Breitengrad) * Sin(Deklination)) _
    / (Cos(Breitengrad) * Cos(Deklination))
DiffMittag = 12 * (Atn((dummy * -1) / _
    Sqr(dummy * -1 * dummy + 1)) _
    + 2 * Atn(1)) / Pi
DiffWozMoz = -0.1752 * Sin(0.03343 * Jahrestag + 0.5474) _
    - 0.134 * Sin(0.018234 * Jahrestag - 0.1939)
Sonnenaufgang = (12 - DiffMittag - DiffWozMoz + _
    (15 - Längengrad * 180 / Pi) * 4 / 60) / 24
End Function

Public
Function Sonnenuntergang( _
    Längengrad As Double, _
    Breitengrad As Double, _
    Datum As Date) As Date
Dim Deklination As Double, DiffWozMoz As Double
Dim Jahrestag As Double, H_aufgang As Double
Dim DiffMittag As Double, dummy As Double
Const Pi = 3.141592653
'Sonnenuntergang bei -50 Bogenminuten
H_aufgang = (-50 / 60) * Pi / 180
'Tag des Jahres
Jahrestag = Datum - DateSerial(Year(Datum), 1, 0)
Breitengrad = Breitengrad * Pi / 180
Längengrad = Längengrad * Pi / 180
'Breitengrad, über dem die Sonne Mittags senkrecht steht
Deklination = 0.40954 * Sin(0.0172 * (Jahrestag - 79.35))
'Differenz zum Mittag in Stunden berechnen
dummy = (Sin(H_aufgang) - Sin(Breitengrad) * Sin(Deklination)) _
    / (Cos(Breitengrad) * Cos(Deklination))
DiffMittag = 12 * (Atn((dummy * -1) / _
    Sqr(dummy * -1 * dummy + 1)) _
    + 2 * Atn(1)) / Pi
DiffWozMoz = -0.1752 * Sin(0.03343 * Jahrestag + 0.5474) _
    - 0.134 * Sin(0.018234 * Jahrestag - 0.1939)
Sonnenuntergang = (12 + DiffMittag - DiffWozMoz + _
    (15 - Längengrad * 180 / Pi) * 4 / 60) / 24
End Function

Public
Function ToSommerWinterzeit(DatumZeit As Date) As Date
  Dim Beginn As Date, Ende As Date, Jahr&
  Jahr = Year(DatumZeit)
  Beginn = DateSerial(Jahr, 4, 0) - (WeekDay( _
    DateSerial(Jahr, 4, 0), 2) Mod 7) + TimeSerial(1, 0, 0)
  Ende = DateSerial(Jahr, 11, 0) - (WeekDay( _
    DateSerial(Jahr, 11, 0), 2) Mod 7) + TimeSerial(1, 0, 0)
  If DatumZeit > Beginn And DatumZeit < Ende Then
    ToSommerWinterzeit = DatumZeit + TimeSerial(1, 0, 0)
  Else
    ToSommerWinterzeit = DatumZeit
  End If
End Function


gruss Bernd


  


Betrifft: AW: Sonnenaufgang von: Thomas
Geschrieben am: 03.07.2006 19:53:54

hi Bernd,

danke für die formeln.

keine ahnung was da steht, aber es funktioniert. :)

mit dem code kann ich nichts anfangen, danke trotzdem.

auch danke an K.Rola, aber die seite bringt mich leider nicht weiter.
aber bernds formeln passen ja.

gruss Thomas