jeg har for 10 år siden lavet noget asp-kode der beregner alle danske helligdage. Lavet til en blomsterbutik, så advent og morsdag er med - de skal lige pilles ud. start med at finde antal dage / timer /minutter med den kan du loope fra fra- til til-dato og tjekke om det er en helligdag - hvis ja, så fratræk 1 dag i resultat. koden er her (skal modificeres lidt til excel) ---------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head> <title>Bare end kalender...</title> <SCRIPT language=JavaScript> var browserID = "n"; if (navigator.appName.indexOf("Microsoft")>=0){browserID="i";} </script> </head> <body> <% sidenavn = LCase(Request.Servervariables("SCRIPT_NAME"))
Function getdaysinmonth(strmonth,stryear) datoen=cdate("01-" & strmonth & "-" & stryear) datoen=dateadd("m",1,datoen) datoen=dateadd("d",-1,datoen) getDaysInMonth=datepart("d",datoen) End Function
Function SkrivStortBogstav(tekst) SkrivStortBogstav=ucase(left(tekst,1)) & lcase(mid(tekst,2,len(tekst))) End Function
Function Helligdage(strdato) aar=CInt(datepart("yyyy",strdato)) 'skal være mellem 1901 & 2199 m= array(0,1,4,4,0,2,5,0,3,6,1,4,6) gyldental=(aar+1) mod 19 if gyldental=0 then gyldental=19 epakt= ((gyldental-1)*11)mod 30 if aar>1899 and aar<2200 then epakt=epakt-1 epakt=epakt mod 30 DagTilFj=80 if gyldental=6 or gyldental=17 then DagTilFj=81 alder=(epakt+DagTilFj) mod 30 if alder<=13 then antaldg=13-alder if alder>13 then antaldg=43-alder fuldmaane=21+antaldg if fuldmaane<=31 then dato=fuldmaane maaned=3 else dato=fuldmaane-31 maaned=4 end if korrektion=(5+aar+aar\4-aar\100+aar\400) mod 7 if aar/4=int(aar/4) and (maaned=1 or maaned=2) then if aar/100<>int(aar/100) then korrektion=korrektion-1 if aar/100 =int(aar/100) then korrektion=korrektion-1 end if u=(dato+m(maaned)+korrektion)mod 7 paaske=dato+7-u if paaske>31 then paaske=paaske-31 maaned=4 end if str = paaske & "-" & maaned &"-"& aar datoto = cdate("24-12-" & datepart("yyyy",strdato)) juldag = weekday(datoto, vbMonday) soendag = dateadd("d",0-juldag,datoto)
if strdato = cdate(str)-49 then Helligdage = "Fastelavn" elseif strdato = cdate(str)-7 then Helligdage = "Palmesøndag" elseif strdato = cdate(str)-3 then Helligdage = "Skærtorsdag" elseif strdato = cdate(str)-2 then Helligdage = "Langfredag" elseif strdato = cdate(str) then Helligdage = "Påskedag" elseif strdato = cdate(str)+1 then Helligdage = "2. Påskedag" elseif strdato = cdate(str)+26 then Helligdage = "St. Bededag" elseif strdato = cdate(str)+39 then Helligdage = "Kr. Himmelfartsdag" elseif strdato = cdate(str)+49 then Helligdage = "Pinsedag" elseif strdato = cdate(str)+50 then Helligdage = "2. Pinsedag" elseif strdato = cdate("1-1-" & datepart("yyyy",strdato)) then Helligdage = "Nytårsdag" elseif strdato = cdate("5-6-" & datepart("yyyy",strdato)) then Helligdage = "Grundlovsdag / Fars dag" elseif strdato = cdate("24-12-" & datepart("yyyy",strdato)) then Helligdage = "Juleaften" elseif strdato = cdate("25-12-" & datepart("yyyy",strdato)) then Helligdage = "Juledag" elseif strdato = cdate("26-12-" & datepart("yyyy",strdato)) then Helligdage = "2. Juledag" elseif strdato = cdate("31-12-" & datepart("yyyy",strdato)) then Helligdage = "Nytårsaften" elseif strdato = soendag then Helligdage = "4. søndag i Advent" elseif strdato = dateadd("ww",-1,soendag) then Helligdage = "3. søndag i Advent" elseif strdato = dateadd("ww",-2,soendag) then Helligdage = "2. søndag i Advent" elseif strdato = dateadd("ww",-3,soendag) then Helligdage = "1. søndag i Advent" else Helligdage = "" end if End Function
strtoday = Date() stryear = Year(strtoday) strmonth = Month(strtoday) If Request("month") <> "" Then strmonth = request("month") If Request("year") <> "" Then stryear = request("year")
strdaysinmonth = getdaysinmonth(strmonth,stryear) %> <table border="0" bgcolor="#C0C0C0" width="490" height="145" style="border: 1px solid #000000;"> <tr> <td> Kalender for <Select size="1" id="months" name="months" onchange="if (browserID=='n'){months = document.getElementById('months'); years = document.getElementById('years');};location.href ='<%=sidenavn%>?month='+months.value+'&year='+years.value"> <% For i = 1 To 12 Response.Write "<option value=" & i If CInt(strmonth) = i Then Response.Write " SELECTED" Response.Write "> " & SkrivStortBogstav(MonthName(i,false)) Response.Write " </option>" & vbCrLf Next %> </Select> <Select size="1" name="years" id="years" onchange="if (browserID=='n'){months = document.getElementById('months'); years = document.getElementById('years');};location.href ='<%=sidenavn%>?month='+months.value+'&year='+years.value"> <% for i = CInt(stryear)-10 to CInt(stryear)+10 Response.Write "<option value=" & i If CInt(stryear) = i Then Response.Write " SELECTED" Response.Write ">" & i & "</option>" & vbCrLf next %> </Select> </td><td align="right"> <a href="<%=sidenavn%>?month=<%=datepart("m",strtoday)%>&year=<%=datepart("yyyy",strtoday)%>" title="Vis aktuel måneds kalender" onMouseOver="window.status=''; return true" onMouseOut="window.status=''"> DD </a> </td> </tr> <tr> <td width="280" align="left" valign="top"> <table cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" width="100%" height="100%" style="border: 1px solid #000000;"> <tr bgcolor="#CFCFCF"> <% for i=1 to 7 response.write "<td align=""center"" width=""40""><b>" if i=7 then response.write "<font color=""#FF0000"">" response.write SkrivStortBogstav(left(weekdayname(i,false,vbMonday),3)) if i=7 then response.write "</font>" response.write "</b></td>" next %> </tr> <tr bgcolor="#CFCFCF"><td colspan="7"><hr></td></tr> <!-- Kalender laves her --> <% datoen = CDate("01-" & strmonth & "-" & stryear) firstday = Weekday(datoen, vbMonday) aktday = 0 if (CInt(strmonth)=CInt(Month(strtoday))) and (CInt(stryear)=CInt(Year(strtoday))) then aktday = CInt(datepart("d",date)) tomme=firstday-1 if tomme>0 then response.write "<tr>" & vbCrLf lastmonth=cint(strmonth)-1 lastyear=cint(stryear) if lastmonth=0 then lastmonth=12 lastyear=lastyear-1 end if for i=1 to tomme response.write "<td align=""center"" bgcolor=""#C0C0C0"" " response.write "onclick=""location.href ='" & sidenavn & "?month=" & lastmonth & "&year=" & lastyear & "'""" response.write "><font color=""#808080"">" response.write datepart("d",dateadd("d",i-(tomme+1),datoen)) response.write "</font></td>" & vbCrLf next end if mddag=9-firstday for i=1 to strdaysinmonth if i=aktday then strItToday = "<td align=""center"" style=""border: 1px solid #000000;""><font color=""#000000"">" else strItToday = "<td align=""center""><font color=""#000000"">" end if if (7+i-mddag) MOD 7 =6 then if i=aktday then strItToday = "<td align=""center"" bgcolor=""#FF8080"" style=""border: 1px solid #000000;""><font color=""#000000"">" else strItToday = "<td align=""center"" bgcolor=""#FF8080""><font color=""#000000"">" end if end if datoen = CDate(i & "-" & strmonth & "-" & stryear) strtxt = Helligdage(datoen) if CInt(strmonth)=5 and i>7 and i<15 and (7+i-mddag) MOD 7 = 6 then if strtxt="" then strtxt = "Mors dag" else strtxt = strtxt & " / Mors dag" end if end if if len(strtxt) > 0 then if i=aktday then strItToday = "<td align=""center"" bgcolor=""#FF8080""style=""border: 1px solid #000000;"" onmouseover=""if (browserID=='n'){texter = document.getElementById('texter');}; texter.innerHTML='" & strtxt & "';"" onmouseout=""if (browserID=='n'){texter = document.getElementById('texter');}; texter.innerHTML='';""><font color=""#000000"">" else strItToday = "<td align=""center"" bgcolor=""#FF8080"" onmouseover=""if (browserID=='n'){texter = document.getElementById('texter');}; texter.innerHTML='" & strtxt & "';"" onmouseout=""if (browserID=='n'){texter = document.getElementById('texter');}; texter.innerHTML='';""><font color=""#000000"">" end if end if if (i-mddag) MOD 7 = 0 then response.write "<tr>" & vbCrLf response.write strItToday & i & "</td>" & vbCrLf if (i-mddag) MOD 7 = 6 then response.write "</tr>" & vbCrLf next if (firstday+strdaysinmonth-1) MOD 7 > 0 then nextmonth=cint(strmonth)+1 nextyear=cint(stryear) if nextmonth=13 then nextmonth=1 nextyear=nextyear+1 end if for i=1 to 7-((firstday+strdaysinmonth-1) MOD 7) response.write "<td align=""center"" bgcolor=""#C0C0C0""" response.write "onclick=""location.href ='" & sidenavn & "?month=" & nextmonth & "&year=" & nextyear & "'""" response.write "><font color=""#808080"">" & i & "</font></td>" & vbCrLf next response.write "</tr>" end if %> <!-- Kalender slut her --> </table> </td> <td valign="top" width="190"> <table cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" style="border: 1px solid #000000;" height="100%" width="100%"> <tr bgcolor="#CFCFCF"> <td><b>Dagens note:</b></td> </tr> <tr bgcolor="#CFCFCF"><td><hr></td></tr> <tr> <td height="100%" valign="top"><div id="texter" style="width:99%; height:99%;"></div></td> </tr> </table> </td> </tr> </table> </body></html>
Tak for alle indslag. Jeg har brug for at det bliver målt i timer. Beklage jeg ikke var skarp å dette til at begynde med.
Lige nu har jeg benyttet =+ANTAL.ARBEJDSDAGE(H7987;I7987;Ark1!$B$1:$B$28)
forklaring H7987 = fra (dato format er 07-08-2014 09:01:17) I7987 = til (dato format er 14-08-2014 11:47:00) Ark1!$B$1:$B$28 = datoer som ikke tæller med i beregningen (helligdage)
Networkdays er antal.arbejdsdage så vidt jeg husker.
Mod er blot forskellen efter division.
Så formlen siger blot antal arbejdsdage - 1 - klokkeslet i A1 og + klokkeslet B2.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.