Avatar billede dkmike Nybegynder
24. august 2007 - 13:06 Der er 7 kommentarer og
1 løsning

Konvertering af en given dato til et uge nr.

Hey

Kan I hjælpe vedr. det, at konvertere en given dato til uge nr.?

Jeg har listet mine datoer i en kolonne, og vil gerne have returneret ugen i den næste:

DATO        UGE
24-08-2007  34
25-08-2007  34
26-08-2007  34
27-08-2007  35

Jeg skal bruge alle datoerne fra 2007 (01-01-2007) og 5 år frem.
Jeg forstiller mig at bygge det som en funktion, men er åben for bedre forslag.

Håber I kan hjælpe mig!

P.S. Jeg er novice i VBA programmering, har været på kursus meeen...

Mvh
Mikael
Avatar billede ulykken-smed Juniormester
24. august 2007 - 15:22 #1
Hej . Kan det her hjælpe dig  =uge.nr(a1;2)

Mvh Ulykken-smed
Avatar billede jens48 Ekspert
24. august 2007 - 15:48 #2
Denne formel giver et mere korrekt resultat:
=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 excelent Ekspert
24. august 2007 - 17:26 #3
Jeg holder på denne til andet er bevist, leveret af bak i andet spørgsmål

=AFKORT((A1-DATO(ÅR(A1+3-REST(A1-2;7));1;REST(A1-2;7)-9))/7)
Avatar billede rosco Novice
24. august 2007 - 19:44 #4
eller som vba-function

Function UgeNr(MyDate)
Dim Resten As Single
Resten = (MyDate - 2) Mod 7
UgeNr = Int((MyDate - DateSerial(Year(MyDate + 3 - Resten), 1, Resten - 9)) / 7)
End Function

Også en af bak´s
Avatar billede jens48 Ekspert
24. august 2007 - 21:46 #5
Blot en lille bemærkning til min lidt lange formel: Den er lavet efter standarden ISO8601, der definerer at ugen begynder med mandag og uge 1 er den første uge med mindst 4 dage. Eller med andre ord: 4. januar er altid i uge 1.
Avatar billede dkmike Nybegynder
27. august 2007 - 09:02 #6
Hey

Det er sgu i orden! Det er jens48's formel jeg fik til at virke først, så det må være ham der får de 60 point.

Dog vil jeg sige at VBA funktionen også virker godt! Et spørgsmål i den forbindelse er, at når jeg vil køre den i "Immediate" vinduet giver den mig en fejl.

Private Sub UgeNrTest()
Debug.Print "Test 1: " & UgeNr("24-08-2007")
End Sub

Function UgeNr(MyDate)
Dim Resten As Single
Resten = (MyDate - 2) Mod 7
UgeNr = Int((MyDate - DateSerial(Year(MyDate + 3 - Resten), 1, Resten - 9)) / 7)
End Function

"Run time Error 13"
Type Mismatch i linjen: Resten = (MyDate - 2) Mod 7

Rosco: kan du hjælpe?

P.S. Hvordan giver jeg point?
Avatar billede jens48 Ekspert
27. august 2007 - 09:31 #7
Et svar. I øvrigt synes jeg at Baks/Exelents formel ser mere elegant ud end min
Avatar billede dkmike Nybegynder
27. august 2007 - 09:34 #8
Ok. Det kommer her!

Jeg kan ikke få Baks formel til at fungere?

Men jeg takker for hjælpen fra alle!

Mvh
Mikael
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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