Avatar billede allenb Nybegynder
26. juni 2002 - 13:08 Der er 12 kommentarer og
1 løsning

Uge problematik

Hej,

Findes der er funktion/program stump, der kan tage et uge nr og et årstal som parameter, og der efter returnere hvilke dage/datoer der er indeholdt i den valgte uge????

Ville lige høre inden jeg kaster mig ud i nogen eksperimenter....

På forhånd tak!

mvh Allan
Avatar billede janvogt Praktikant
26. juni 2002 - 13:28 #1
Ikke mig bekendt, men jeg lytter lige med .....
Avatar billede allenb Nybegynder
26. juni 2002 - 13:30 #2
er selv igang, jeg skal nok droppe løsningen her, såfremt det lykkes....
Avatar billede janvogt Praktikant
26. juni 2002 - 14:19 #3
Den er ikke helt nem .......
Husk at UGE.NR funktionen i Excel ikke regner korrekt.
Avatar billede janvogt Praktikant
26. juni 2002 - 14:20 #4
... i relation til de danske regler for beregning af ugenummer.
Avatar billede allenb Nybegynder
26. juni 2002 - 14:37 #5
I know....men tak for oplysningen
Avatar billede bak Forsker
26. juni 2002 - 15:42 #6
Jeg kan ikke lige give dig alle dagene men jeg kan give dig mandag i ugen.
hvis ugenummeret er i A1 og Årstal i A2:
=DATO(A2;1;7*A1-3-UGEDAG(DATO(A2;;);3))
Avatar billede allenb Nybegynder
27. juni 2002 - 10:19 #7
Her er en løsning - dog ikke helt optimal, men den virker....

Public iWeek As Integer, iTempWeek As Integer
Public iYear As Integer
Public dDate As String

Public Function FirstDayInWeek(ByVal iWeek As Integer, ByVal iYear As Integer)

'iWeek = InputBox("Indtast uge nummer", "Uge")
'iYear = InputBox("Indtast år", "År")

       
If iWeek <= 0 Or iWeek > 53 Then
  MsgBox "Ikke tilladt værdi - uge skal være mellem 1 og 53", vbInformation, "Fejl!"
  End
End If

'evt. validering på år

If iWeek > 26 Then
   
    dDate = Format(DateSerial(iYear, 3, 1), "dd-mm-yyyy")
   
    Do Until iTempWeek = iWeek
   
        dDate = DateAdd("d", 1, dDate)
        iTempWeek = DatePart("ww", dDate, vbMonday, vbFirstFourDays)
           
        If iTempWeek = 1 Then
            MsgBox "Uge: " & iWeek & " forekommer ikke i år: " & iYear, vbInformation, "Fejl!"
            End
        End If
       
    Loop

Else

    dDate = Format(DateSerial(iYear - 1, 12, 23), "dd-mm-yyyy")

    Do Until iTempWeek = iWeek
       
        dDate = DateAdd("d", 1, dDate)
        iTempWeek = DatePart("ww", dDate, vbMonday, vbFirstFourDays)
               
    Loop

End If

'MsgBox "Første dag i uge: " & iWeek & "- År: " & iYear & " er d. " & Format(dDate, "dd-mm-yyyy"), , "Resultat"

FirstDayInWeek = dDate

End Function
Avatar billede bak Forsker
27. juni 2002 - 18:54 #8
Lidt kortere:
Function FDIU(uge As Integer, år As Integer)
FDIU = Evaluate("DATE(" & år & ",1,7*" & uge & "-3-WEEKDAY(DATE(" & år & ",,),3))")
End Function
Avatar billede allenb Nybegynder
28. juni 2002 - 08:45 #9
Hej Bak,

Cool løsning!!! - kan du evt. ved lejlighed lige forklare den....
Avatar billede bak Forsker
28. juni 2002 - 10:26 #10
I princippet er det bare den regnearksformel jeg sendte først, som jeg får VBA til at evaluere/beregne. jeg har så indsat år og uge.
Den 1. Date bruger året og 1 måned, lægger så ugen * 7 til, herfra trækkes så 3 og ugedagen for 30-11 året før. (Date(2002,,) giver altid 30-11).
Avatar billede janvogt Praktikant
28. juni 2002 - 11:54 #11
Genialt bak. Den ryger direkte ind i guldkorns-samlingen :-)
Avatar billede bak Forsker
28. juni 2002 - 15:02 #12
Tak Jan. Udkommer du snart?? :-)
Avatar billede janvogt Praktikant
28. juni 2002 - 15:12 #13
Ja, "beta-versionen" er klar, men jeg har lige været en tur i Venezuela så det har ligget stille lidt.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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