Forfatter |
Emne Søg Emne funktioner
|
Bjarnehansen
Platin bruger
Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5585
|
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
|
|
|
|
|
Bjarnehansen
Platin bruger
Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5585
|
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 ?
|
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
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5470
|
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.
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5470
|
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
|
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.
|
|
Bjarnehansen
Platin bruger
Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5585
|
Sendt: 27.Maj.2014 kl. 18:07 |
ok jeg ved ikke hvor jeg har fået den henne men den er god. 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
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5470
|
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.
|
|
Bjarnehansen
Platin bruger
Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5585
|
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
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5470
|
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.
|
|
Bjarnehansen
Platin bruger
Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5585
|
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
|
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
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5470
|
Sendt: 28.Maj.2014 kl. 15:51 |
Fair nok 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.
|
|
Bjarnehansen
Platin bruger
Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5585
|
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
|
|
Bjarnehansen
Platin bruger
Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5585
|
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
|
|
Bjarnehansen
Platin bruger
Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5585
|
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
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5470
|
Sendt: 28.Maj.2014 kl. 19:14 |
Selv go' aften (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 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.
|
|
Bjarnehansen
Platin bruger
Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5585
|
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
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5470
|
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.
|
|
Bjarnehansen
Platin bruger
Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5585
|
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
|
|
Bjarnehansen
Platin bruger
Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5585
|
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
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5470
|
Sendt: 29.Maj.2014 kl. 08:08 |
Så laver vi dem da bare lidt om
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.
|
|
Bjarnehansen
Platin bruger
Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5585
|
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
|
|