Avatar billede denero Juniormester
14. juli 2009 - 13:10 Der er 11 kommentarer og
1 løsning

Bestemme ugedag ud fra datomellem 2003 -nu

Jeg har 3 kolonner med flg. data:

Navn    29-05-2009    05:26
Navn    29-05-2003    05:26
Navn    29-05-2008    05:26
Osv. i mange rækker

I 4. kolonne vil jeg gerne have, hvilken uge det er. Jeg mener, at der er et eller andet med, at man skal være opmærksom på, at med en formel kan der ske en forkert beregning efter et bestemt årsskifte. Da der løbende bliver udskiftet data i de første 3 kolonner og antallet af rækker varierer, vil jeg gerne indsætte formlen i kolonne 4 med en makro. Det har jeg vist styr på, men hvis der ligger en superide også på dette, er den velkommen
Avatar billede supertekst Ekspert
14. juli 2009 - 13:52 #1
Kunne du bruge lidt VBA-kode i stedet?
Avatar billede denero Juniormester
14. juli 2009 - 13:57 #2
Gerne.
Avatar billede rosco Novice
14. juli 2009 - 14:09 #3
Ugenr:
=HVIS(A1="";"";AFKORT((A1-UGEDAG(A1;2)-DATO(ÅR(A1+4-UGEDAG(A1;2));1;-10))/7))
Ugedag:
=TEKST(A1;"dddd")
Måned:
=TEKST(A1;"mmmm")
År:
=ÅR(A1)
Avatar billede supertekst Ekspert
14. juli 2009 - 14:34 #4
Koden anbringes "i det relevante ark"
Når dato ændres i kolonne B udregnes UgeNr


Private Sub Worksheet_Change(ByVal Target As Range)
Dim dato As Date, ugenr As Byte
    If Target.Column = 2 And IsDate(Target) = True Then
        dato = Target.Value
        ugenr = DatePart("ww", dato, vbMonday, vbFirstFourDays)
        Cells(Target.Row, 4) = ugenr
    End If
End Sub
Avatar billede denero Juniormester
14. juli 2009 - 14:39 #5
Ups - meget undskyld. Mine tanker var vist et andet sted. Det er ikke uge - nummer jeg skal bruge, men uge - dag - derfor også det med den forskudte dag ved et eller andet årsskifte.
Avatar billede supertekst Ekspert
14. juli 2009 - 14:50 #6
Ok - "forskydningen skulle allerede være medtaget"

Private Sub Worksheet_Change(ByVal Target As Range)
Dim dato As Date, ugeDag As Byte
Dim ugeDage As Variant
    ugeDage = Array("", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn")

    If Target.Column = 2 And IsDate(Target) = True Then
        dato = Target.Value
        ugeDag = DatePart("W", dato, vbMonday, vbFirstFourDays)
        Cells(Target.Row, 4) = ugeDage(ugeDag)
    End If
End Sub
Avatar billede denero Juniormester
14. juli 2009 - 15:49 #7
Hmm - kan ikke rigtig få det til at virke.
De data som er i kolonne a b c bliver undervejs flere gange "skiftet", men med din kode skal man ind i hver dato og ændre for at der bliver vist ugedag i kolonne d. Hvad gør jeg lige?
Avatar billede supertekst Ekspert
14. juli 2009 - 15:56 #8
Så skal vi også have en VBA-der lige sætter ugedagen første gang.
Avatar billede denero Juniormester
14. juli 2009 - 16:02 #9
ja?
Avatar billede supertekst Ekspert
14. juli 2009 - 16:04 #10
SætUgeDag skal blot køres een gang
==================================

Sub sætUgeDag()
Dim sidsteRække, dato As Date
    sidsteRække = ActiveCell.SpecialCells(xlLastCell).Row

    For række = 1 To sidsteRække
        dato = Cells(række, 2)
        If IsDate(dato) = True Then
            Cells(række, 2) = dato
        End If
    Next række
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim dato As Date, ugeDag As Byte
Dim ugeDage As Variant
    ugeDage = Array("", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn")

    If Target.Column = 2 And IsDate(Target) = True Then
        dato = Target.Value
        ugeDag = DatePart("W", dato, vbMonday, vbFirstFourDays)
        Cells(Target.Row, 4) = ugeDage(ugeDag)
    End If
End Sub
Avatar billede denero Juniormester
14. juli 2009 - 16:11 #11
Smukt - ligger du et svar.
Avatar billede supertekst Ekspert
14. juli 2009 - 17:32 #12
Tak - det gør jeg...
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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