14. juli 2009 - 13:10Der 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
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
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.
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
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?
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
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.