Avatar billede claus_lind Praktikant
04. maj 2009 - 21:47 Der er 10 kommentarer og
1 løsning

Ugenummer ud fra dato samt datoer ud fra ugenummer

Er der nogen der har lavet funktioner (som de vil dele) der kan tage en dato ind og returnere ugenummeret ( Efter DK standard).

Samt en funktion der får et ugenummer og returnerer 2 datoer som er startdato og slutdatoen på ugen.

Med venlig hilsen

Claus Lind
Avatar billede arne_v Ekspert
04. maj 2009 - 21:54 #1
Function WeekNumber(year, mon, day)
    Dim a, y, m, JD, d4, L, d1
    a = (14 - mon) \ 12
    y = year + 4800 - a
    m = mon + 12 * a - 3
    JD = day + (153 * m + 2) \ 5 + 365 * y + y \ 4 - y \ 100 + y \ 400 - 32045
    d4 = (((JD + 31741 - JD Mod 7) Mod 146097) Mod 36524) Mod 1461
    L = d4 \ 1460
    d1 = ((d4 - L) Mod 365) + L
    WeekNumber = d1 \ 7 + 1
End Function

regner rigtigt.

(det er VBS ikke VBA, men det bør være overkommeligt at konvertere)
Avatar billede arne_v Ekspert
04. maj 2009 - 21:56 #2
For den anden vej så lave en løkke der kører frem og tilbage og tester med WeekNumber funktionen om datoen er i ugen.
Avatar billede jens48 Ekspert
04. maj 2009 - 21:57 #3
Prøv med
=INT((A1-(DATE(YEAR(A1+(MOD(8-WEEKDAY(A1);7)-3));1;1))-3+MOD(WEEKDAY(DATE(YEAR(A1+(MOD(8-WEEKDAY(A1);7)-3));1;1))+1;7))/7)+1
Avatar billede mugs Novice
04. maj 2009 - 21:57 #4
Ugenr i en forespørgsel:

udtryk1: DatePart("ww";[start];1;0)

hvor de sidste 2 argumenter repræsenterer hvilken dag ugen starter med og hvilken uge der er årets første.
Avatar billede jens48 Ekspert
04. maj 2009 - 22:05 #5
Og på dansk
=heltal((a1-(dato(år(a1+(rest(8-ugedag(a1);7)-3));1;1))-3+rest(ugedag(dato(år(a1+(rest(8-ugedag(a1);7)-3));1;1))+1;7))/7)+1
Avatar billede claus_lind Praktikant
04. maj 2009 - 22:08 #6
Her går det stærkt:)

Jeg vil lige kigge på i morgen hvis der kommer en ledig stund.

Det skal bruges i en forespørgsel til udvælgelse af arbejdstider i en uge.

Hilsen Claus
Avatar billede arne_v Ekspert
04. maj 2009 - 22:09 #7
DatePart "ww" ville være langt det bedste hvis den regnede rigtigt.

Men det gør den ikke.
Avatar billede jens48 Ekspert
04. maj 2009 - 22:37 #8
Du kan kun returnere en uges startdato hvis du også har et år angivet. Med uge i a1 og år i b1 kan denne formel bruges til startdato:
=IF(WEEKDAY(DATE(B1;1;1);2)>4;8-WEEKDAY(DATE(B1;1;1);2);1-WEEKDAY(DATE(B1;1;1);2))+DATE(B1;1;1)+(A1-1)*7
Slutdato er så 6 dage senere
God fornøjelse i morgen
Avatar billede claus_lind Praktikant
10. maj 2009 - 10:20 #9
Har prøvet med alle.  Alle har givet et godt svar.
Den der umidebart var nemmest at få tilpasset var #1.
Jeg giver point til arne_v, men takker mange gange for de andre input.

Med venlig hilsen Claus
Avatar billede claus_lind Praktikant
10. maj 2009 - 10:23 #10
Arne_v ligger du et svar ?
Avatar billede arne_v Ekspert
10. maj 2009 - 14:57 #11
kommer her
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester