Avatar billede Nervatos Seniormester
23. oktober 2018 - 19:01 Der er 13 kommentarer og
2 løsninger

Macro til at rette i uger

Hej med Jer

Jeg har lidt udfordringer med, at jeg har en kolonne med uger. Nogen gange står der Uge 1-4, andre gange Uge 2-3 osv.

Er det muligt, at en macro kan lave dette om således:

Uge 1-4 = Uge 1+2+3+4
Uge 2-3 = Uge 2+3

Uge 6-12 = Uge 6+7+8+9+10+11+12
Uge 43-52 = Uge 43+44+45+46+47+48+49+50+51+52

Håber I forstår, hvad jeg mener.

Jeg har forsøgt lidt med noget regEx, i forhold til "\d{1,2}\-\d{1,2}" - således den opfanger 01 eller bare 1.

PFT.
Avatar billede jens48 Ekspert
23. oktober 2018 - 20:36 #1
Hvis du markerer cellerne, du ønsker at ændre og kører denne makro, bliver teksten i cellerne ændret.

Sub Uge()
Dim C, Omr As Range
On Error Resume Next
Dim LastRow, K, F, S, R, X As Integer
Set Omr = Selection
For Each C In Omr
K = WorksheetFunction.Find("-", C)
F = Mid(C, K - 2, 2) * 1
S = Mid(C, K + 1, 2) * 1
C.Value = "Uge " & F
For X = F + 1 To S
C.Value = C.Value & " + " & X
Next
Next
End Sub
Avatar billede Nervatos Seniormester
24. oktober 2018 - 14:25 #2
Hej

Tusind tak for forslaget, hvis jeg ikke selv skal markere felterne. Men blot gøres fra kolonne D, automatik. Er det muligt?
Avatar billede jens48 Ekspert
24. oktober 2018 - 14:39 #3
Med resultatet I same celler?
Avatar billede Nervatos Seniormester
24. oktober 2018 - 16:13 #4
Ja tak 😊
Avatar billede store-morten Ekspert
24. oktober 2018 - 16:23 #5
Hvis du kender dit område, så prøv at udskifte:

Set Omr = Selection
Med:
Set Omr = Range("D4:D7")
Avatar billede Nervatos Seniormester
24. oktober 2018 - 19:02 #6
Umiddelbart virker koden fint nok, hvis der er "uge 30-32". Men hvis der bare står uge 20, så sletter den det og skriver Uge 4 - andre steder skriver den bare Uge.
Avatar billede Nervatos Seniormester
24. oktober 2018 - 19:06 #7
Ah det er hvis der f.eks. står Uge 40, så bliver den rettet til Uge 4 og samme med andre.
Avatar billede jens48 Ekspert
24. oktober 2018 - 19:52 #8
Jeg har brugt Store-Mortens forslag til at vælge et bestemt område i D-kolonnen. Ret selv hvis det ikke passer. Desuden testes der nu om cellen er tom og om der kun står en uge i cellen.

Sub Uge()
Dim C, Omr As Range
On Error Resume Next
Dim LastRow, K, F, S, R, X As Integer
Set Omr = Range("D2:D17") ' ret området
For Each C In Omr
S = 0
If C <> "" Then
K = WorksheetFunction.Find("-", C)
If K = "" Then
Else
F = Mid(C, K - 2, 2) * 1
S = Mid(C, K + 1, 2) * 1
C.Value = "Uge " & F
For X = F + 1 To S
C.Value = C.Value & " + " & X
Next
End If
End If
Next
End Sub
Avatar billede store-morten Ekspert
24. oktober 2018 - 19:57 #9
Sub Uge()
Dim C, Omr As Range
On Error Resume Next
Dim K, F, S, R, X As Integer
Set Omr = Selection
For Each C In Omr
K = WorksheetFunction.Find("-", C)

If IsEmpty(K) Then GoTo Næste

F = Mid(C, K - 2, 2) * 1
S = Mid(C, K + 1, 2) * 1
C.Value = "Uge " & F
    For X = F + 1 To S
    C.Value = C.Value & " + " & X
    Next
Næste:
Next
End Sub
Avatar billede Nervatos Seniormester
24. oktober 2018 - 19:59 #10
Hej igen Jens

Den laver samme nummer, så den skriver Uge 4 ved f.eks. Uge 43

Tak for dit forsøg!
Avatar billede Nervatos Seniormester
24. oktober 2018 - 20:06 #11
Det samme gør din store-morten, tak for forslaget også.
Avatar billede store-morten Ekspert
24. oktober 2018 - 20:11 #12
Det var mærkeligt?
Den skulle gerne springe de celler over der ikke indeholder - (bindestreg)

K = WorksheetFunction.Find("-", C)
If IsEmpty(K) Then GoTo Næste
Avatar billede Nervatos Seniormester
24. oktober 2018 - 20:18 #13
Jeg har ikke nogle bindestreg i dem, hvor den retter det til Uge 4 fra Uge 43. Der står kun Uge 43.

Ved ikke, om der findes en anden udvej?
Avatar billede store-morten Ekspert
24. oktober 2018 - 20:30 #14
Har du mulighed for at uploade et eks.ark der fejler?
Avatar billede Nervatos Seniormester
07. november 2018 - 18:59 #15
#14 Beklager det sene svar, men efter jeg oprettede tingene på ny. Så virker det perfekt. Tusind tak for hjælpen begge to!
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

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