Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketKan man dette ?

 Besvar Besvar Side  12>
Forfatter
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5509
Direkte link til dette indlæg Emne: Kan man dette ?
    Sendt: 26.Maj.2014 kl. 16:06
hej 

jeg har denne funktion:

Function HelligdagsNavn(lngdate As Long, InclSaturdays As Boolean, _

    InclSundays As Boolean) As String

' Returnerer Sand hvis lngDate er en Dansk HelligdagsNavn/nationaldag
' (valgfri inkludering af lørdag/søndag)
' bruger funktionen Påskedag

Dim InputYear As Integer, PD As Long, OK As Boolean

    If lngdate <= 0 Then lngdate = Date
    InputYear = Year(lngdate)
    PD = Påskedag(InputYear)
      OK = True

    Select Case lngdate ' Tester nedenstående påstande mod datoen

'
' Helligedage og andre mærkedage på faste datoer
'
        Case DateSerial(InputYear, 1, 1): HelligdagsNavn = "Nytårsdag"
        Case DateSerial(InputYear, 1, 6): HelligdagsNavn = "Hellig tre Konger"
        Case DateSerial(InputYear, 2, 14): HelligdagsNavn = "Valentinsdag"
        Case DateSerial(InputYear, 6, 5): HelligdagsNavn = "Grundlovsdag & Fars dag"
        Case DateSerial(InputYear, 6, 23): HelligdagsNavn = "Sankt Hansaften"
        Case DateSerial(InputYear, 6, 24): HelligdagsNavn = "Sankt Hansdag"
        Case DateSerial(InputYear, 10, 31): HelligdagsNavn = "Halloween"
        Case DateSerial(InputYear, 11, 10): HelligdagsNavn = "Mortensaften"
        Case DateSerial(InputYear, 11, 11): HelligdagsNavn = "Mortensdag"
        Case DateSerial(InputYear, 12, 24): HelligdagsNavn = "Julaftensdag"
        Case DateSerial(InputYear, 12, 25): HelligdagsNavn = "1. Juledag"
        Case DateSerial(InputYear, 12, 26): HelligdagsNavn = "2. Juledag"
        Case DateSerial(InputYear, 12, 31): HelligdagsNavn = "Nytårsaftensdag"

'
' Helligedage og andre mærkedage på beregnet datoer
'
        Case PD - 49: HelligdagsNavn = "Fastelavn"
        Case PD - 7: HelligdagsNavn = "Palmesøndag"
        Case PD - 3: HelligdagsNavn = "Skærtorsdag"
        Case PD - 2: HelligdagsNavn = "Langfredag"

'
' minus dage efter Påskedag
'
        Case PD: HelligdagsNavn = "Påskedag"
'
' plus dage efter Påskedag

'
        Case PD + 1: HelligdagsNavn = "2. Påskedag"
        Case PD + 26: HelligdagsNavn = "Store bededag"
        Case PD + 39: HelligdagsNavn = "Kristi Himmelfartsdag"
        Case PD + 49: HelligdagsNavn = "Pinsedag"
        Case PD + 50: HelligdagsNavn = "2. Pinsedag"
        Case Else

          End Select

            OK = False

            If InclSaturdays Then ' Tester lørdage, hvis de skal medtages

                If Weekday(lngdate, vbMonday) = 6 Then

                    HelligdagsNavn = HelligdagsNavn & " Lørdag"

                End If

            End If

            If InclSundays Then ' Tester søndage, hvis de skal medtages

                If Weekday(lngdate, vbMonday) = 7 Then

                HelligdagsNavn = HelligdagsNavn & " Søndag"

                End If

          End If 

End Function

 

 kan man i denne i linierne 

 Case DateSerial(InputYear, 6, 24): HelligdagsNavn = "Sankt Hansdag"

ændre 6 og 24 til nogle variablere for dag og måned som en anden funktion finder dato for sommertidensstart og sommertidensslut når man kender året i denne funktion:

Function Sommertidsdato(aar As Integer, BegSlut As Integer) As Date

' Beregner sommertidsdatoerne ud fra året.

' Sommertid antages at være sidste søndag i hhv. marts og oktober (time 3).

' Syntaks: Sommertid(År,1|2), 1 for forårsdagen, 2 (eller andet) for efterårsdagen.

  Dim Dato As Date

  If BegSlut = 1 Then

    Dato = DateSerial(aar, 4, 1)

    Sommertidsdato = Dato - DatePart("w", Dato, vbMonday)

  Else

    Dato = DateSerial(aar, 11, 1)

    Sommertidsdato = Dato - DatePart("w", Dato, vbMonday)

  End If

End Function

og det samme for morsdag med denne formel:

=HVIS($G$3<D49;"";DATO($G$3;5;1+((2-(1>=UGEDAG(DATO($G$3;5;1))))*7)+(1-UGEDAG(DATO($G$3;5;1)))))

kan man det ?

Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top



Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5509
Direkte link til dette indlæg Sendt: 26.Maj.2014 kl. 18:21
jeg vil tror at det kan jeg godt men...
jeg skal bruge fløgende varialer somtidstart=sommertidstarter, somtidslut=sommertidslutter, disse skal så dim som long så vidt jeg kan finde ud af
 også skal der laves 2 linier ala,
somtidstater=sommertidsdato(inputyear;1)
somtidslutter=sommertidsdato(inputYear;2)

skal der så ikke laves en case somtidstater :helligdagsnavn="Sommertid starter"
en case somtidsluter :helligdagsnavn="Sommertid Slutter"

er jeg helt forkert på den ? Wacko
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
Direkte link til dette indlæg Sendt: 27.Maj.2014 kl. 09:35
Hej Bjarne,

Jeg tror, at det du efterspørger, er meget let at lave, men jeg skal bare lige være helt sikker på, hvad det er du vil have, da jeg har lidt svært ved at gennemskue det?

Ønsker du, at vide om en bestemt dato ligger inden for eller uden for sommertid?

Eller ønsker du blot, at vide sidste søndag i marts og sidste søndag i oktober?
(sommertid start og sommertid slut)

Eller?

Måske du hurtigt kan finde inspiration her.
www.excelgaard.dk/Bib/SOMMERTID/ www.excelgaard.dk/Bib/SOMMERTID/

PS: Husk, at sommertid først blev indført i 1916, så arbejder du med datoer før 1916 skal du ikke medregne sommertid.
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
Direkte link til dette indlæg Sendt: 27.Maj.2014 kl. 09:38
PPS: Funktionen  =HelligDagsNavn()  er rent faktisk en af mine funktioer - ja, endda en af de første funktioner jeg overhovedet lavede (back in 2003, så vidt jeg husker), og jeg havde den liggende på mit website de første par år (2004-2006).

Men, jeg ser den tit og ofte i brug rundt omkring, så her må jeg da have ramt rigtigt Smile
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5509
Direkte link til dette indlæg Sendt: 27.Maj.2014 kl. 18:07
ok jeg ved ikke hvor jeg har fået den henne men den er god.Thumbs Up

det jeg efterspørger er at indbygge i den funktion at den kan finder sommertid start og sommertid slut samt den kan finde morsdag og sætte den i som en )helligdag) jeg ved godt det ikke er en helligdag og den skal kun bruges fra nu og med datoer frem.

jeg har denne funktion den finder start og slut på sommertiden det er den jeg evt. skulle bruge sammen med =helligdagsnavn()

Function Sommertidsdato(aar As Integer, BegSlut As Integer) As Date

' Beregner sommertidsdatoerne ud fra året.

' Sommertid antages at være sidste søndag i hhv. marts og oktober (time 3).

' Syntaks: Sommertid(År,1|2), 1 for forårsdagen, 2 (eller andet) for efterårsdagen.

  Dim Dato As Date

  If BegSlut = 1 Then

    Dato = DateSerial(aar, 4, 1)

    Sommertidsdato = Dato - DatePart("w", Dato, vbMonday)

  Else

    Dato = DateSerial(aar, 11, 1)

    Sommertidsdato = Dato - DatePart("w", Dato, vbMonday)

  End If

End Function

Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
Direkte link til dette indlæg Sendt: 27.Maj.2014 kl. 19:21
Jeg er stadig ikke 100% på, hvad du beder om, da VBA formlerne for sommertid er givet i det link, jeg gav dig, og VBA formlen for mors dag burde være lige så let, da den, jo, altid falder på 2. søndag i maj:
MorsDag =  7 * Int(DateSerial(Aarstal, 5, 13) / 7) + 1
Og, alle tre formler kan du, jo, blot indbygge i helligdags funktionen, da alle tre datoer altid falder på en søndag, og dermed altid er en helligdag.

Eller, hvad er det, jeg helt misforstår???
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5509
Direkte link til dette indlæg Sendt: 27.Maj.2014 kl. 19:38
jeg vender lige tilbage imorgen når jeg får prøvet at rode med helligdagsnavn

din funktion til sommertid finder den ikke kun om datoen ligger inde for sommertiden?

det jeg vil er at indbygge en formel/funktion der finder den dato sommertiden starter og slutter på således at dan ud for den dato skriver sommertid begynder ligeledes ud for den dato at den slutter skriver den sommetid slutter.
samt det samme for morsdag.

og det ville jeg gerne indbygge i helligdagsnavn() således at den funktion bare skal opdateres i det ark hvor den skal bruges.

den funktion der var i mit forrige svar finder den dato sommertid begynder og slutter udfra årstallet.

håber det giver mere mening.

Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
Direkte link til dette indlæg Sendt: 28.Maj.2014 kl. 11:45
Ja, lige nøjagtigt !?!

Formlerne for sommertid start og sommertid slut finder du på linket, og formlen for Mors Dag er givet ovenover...
...er det så ikke blot, at teste for de tre datoer, f.eks. med tre 'If...' sætninger???

Det er muligt, at min  www.excelgaard.dk/Bib/SOMMERTID/" target="_blank" rel="nofollow">=SOMMERTID()  funktion blot fortæller om en dato ligger indefor eller udenfor sommertid, men dette ændrer da ikke ved, at jeg stadig er nødt til at finde datoerne i den funktion, og at du dermed har formlerne???

Jeg har simpelthen svært ved at se problemet???
If lngDate = 7 * Int(DateSerial(Year(lngDate), 5, 13) / 7) + 1 Then HelligDagsNavn = "Mors Dag"
...bare for at skære 'Mors Dag' helt ud i pap!

Er det mig, der er fuldstændig dum i knolden, og bare ikke kan se, hvad dit problem er???

(Sorry, vil virkelig gerne hjælpe, men, jeg forstår ikke???)
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5509
Direkte link til dette indlæg Sendt: 28.Maj.2014 kl. 13:40
problemet er at jeg ikke har rodet med funktioner før så jeg ville bare vide om man kunne ændre i din helligdagsnav(). det er måske mig der ikke har forklaret det godt nok Shocked
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
Direkte link til dette indlæg Sendt: 28.Maj.2014 kl. 15:51
Fair nok Smile

Fik du ideen med den 'If...' sætning til Mors Dag, eller skal jeg lave funktionen for dig?
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5509
Direkte link til dette indlæg Sendt: 28.Maj.2014 kl. 16:06
jeg vil godt selv prøve først...
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5509
Direkte link til dette indlæg Sendt: 28.Maj.2014 kl. 17:36
uploads/397/Spørgsmål_Bjarne_test_maj_28.xlsm
så har jeg fået morsdag lagt ind klik på marts2013 det er kun til test at jeg har brugt dette ark så nu mangler jeg kun det med at sommertid begynder og sommertiden slutter
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5509
Direkte link til dette indlæg Sendt: 28.Maj.2014 kl. 18:20
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
Direkte link til dette indlæg Sendt: 28.Maj.2014 kl. 19:14
Selv go' aften Smile
(Nice one)

Det virker sørm'e - jeg var aldrig i tvivl om, at du kunne, så derfor min forvirring over, at du blev ved med at spørge LOL

Det virker osse, hvis man indtaster 26-10-2014 ind i cellen (sommertid slutter)

Godt gået...
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5509
Direkte link til dette indlæg Sendt: 28.Maj.2014 kl. 19:59
ups har lige fundet udaf at den ikke regner rigtigt hvis jeg skriver 20-10-12 og så er det at jeg ikke ved hvordan  den formel er opbygget..?
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
Direkte link til dette indlæg Sendt: 28.Maj.2014 kl. 20:03
Hmmm...
Den virker da i det regneark, du har lagt ud?

Hvis du f.eks. skriver 20-10-2014, i celle A17, ud for, hvor der lige nu står 'Sommertid starter', så fjernes helligdags markerings da i celle C17, og 'sommertid slutter' vises i celle C23.

Fuldstændig, som det skal...
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5509
Direkte link til dette indlæg Sendt: 28.Maj.2014 kl. 20:25
ja men skriver jeg 20-10-2012 tager den næstsidste søndag den 21-10-2012 istedet for sidste søndag 28-10-2012 ..
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5509
Direkte link til dette indlæg Sendt: 28.Maj.2014 kl. 20:30
og skriver jeg 20-10-2016 siger den 23-10-2016 sutter sommertiden og det er ikke rigtigt...
jeg indtaster datoen i A7....
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
Direkte link til dette indlæg Sendt: 29.Maj.2014 kl. 08:08
Så laver vi dem da bare lidt om Smile
If lngdate = 7 * Int(DateSerial(Year(lngdate), 4, 13) / 7) + 1 - 14 Then HelligdagsNavn = "Sommertid Begynder"
If lngdate = 7 * Int(DateSerial(Year(lngdate), 11, 13) / 7) + 1 - 14 Then HelligdagsNavn = "Sommertid Slutter"

Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5509
Direkte link til dette indlæg Sendt: 29.Maj.2014 kl. 13:11
koden på den tilsendte fil er Bus
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
 Besvar Besvar Side  12>

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk