Avatar billede rodding Juniormester
09. september 2020 - 21:03 Der er 6 kommentarer og
1 løsning

Excel - vbs script

jeg har et ark med følgende kolonner:
Navn    Start            Slut                    lok1  lok2    lok3
hr. A      17-08-2020    28-09-2020    10a      var 1    s1
Hr  B    02-09-2020    04-09-2020    10b      var 2    s1
Fru A    17-08-2020    21-09-2020    10b      var 3    s2
Frk C    20-08-2020    21-09-2020    11c      var 4    s4

Som man kan se dækker hr A en periode fra 17/8 til 28/9.
Mit ønske er et script, der på et nyt ark(faneblad) laver en linje for hver dag mellem start og slut, med dato, navn, lok1, lok2 og lok3, - altså for hr. A 1 linjer.

17-08-2020 Hr A  10a  var1  s1
18-08-2020 Hr A  10a  var1  s1
19-08-2020 Hr A  10a  var1  s1
....

og så fremdeles for alle linjer i rådata arket.

Er det forståeligt og muligt?
Avatar billede rodding Juniormester
09. september 2020 - 21:09 #1
ups! det er naturligvis 12 linjer for Hr A
Avatar billede Mads32 Ekspert
10. september 2020 - 10:43 #2
Hej

Det kan løses med sortering.
Sorter først på datoer, og dernæst på navne

m v  h  mads32
Avatar billede jens48 Ekspert
10. september 2020 - 13:26 #3
Hvis jeg har forstået dig ret kan denne makro klare det.

Sub Flyt()
Dim Start, Slut, x, y, z As Long
z = 1
For x = 3 To 7 ' start i linie 3 og slut i line 7
Start = Int(Cells(x, 2).Value)
Slut = Cells(x, 3).Value
For y = Start To Slut
Worksheets("Sheet2").Cells(z, 1) = y
Cells(x, 1).Copy Destination:=Worksheets("Sheet2").Cells(z, 2)
Range(Cells(x, 4), Cells(x, 6)).Copy Destination:=Worksheets("Sheet2").Cells(z, 3)
z = z + 1
Next
Next
End Sub
Avatar billede rodding Juniormester
10. september 2020 - 21:44 #4
Hej Jens
det er jo præcist, det jeg søgte.

jeg kunne dog godt tænke mig en justering, hvis det er muligt.

1. Kan du lave, så makroen først sletter dataene fra række 2 og resten i Sheets2 fanebladet og placerer det nye i A2.

2. I stedet for at der "kopieres" fra
"For x = 3 To 7 ' start i linie 3 og slut i line 7"
så fra 2 til der ikke er flere linjer.

Kan det lade sig gøre.
Avatar billede rodding Juniormester
10. september 2020 - 22:26 #5
en lille tilføjelse, - det tager rigtig lang tid bare at behandle 7 rækker.... :-)
Avatar billede jens48 Ekspert
11. september 2020 - 11:23 #6
Jeg har rettet makroen til, med hensyn til dine ønsker, men den er stadig ikke særlig hurtig

Sub Flyt()
Dim Start, Slut, LastRow1, LastRow2, x, y, z As Long
Application.Calculation = xlCalculationManual
LastRow1 = Range("A" & Cells.Rows.Count).End(xlUp).Row
LastRow2 = Worksheets("Sheet2").Range("A" & Cells.Rows.Count).End(xlUp).Row
Worksheets("Sheet2").Range("A2:A" & LastRow2).EntireRow.ClearContents
z = 2
For x = 3 To LastRow1
Start = Cells(x, 2).Value
Slut = Cells(x, 3).Value
For y = Start To Slut
Worksheets("Sheet2").Cells(z, 1) = y
Cells(x, 1).Copy Destination:=Worksheets("Sheet2").Cells(z, 2)
Range(Cells(x, 4), Cells(x, 6)).Copy Destination:=Worksheets("Sheet2").Cells(z, 3)
z = z + 1
Next
Next
Application.Calculation = xlCalculationAutomatic
End Sub
Avatar billede rodding Juniormester
12. september 2020 - 21:10 #7
Tak for det, det virker perfekt.
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



IT-JOB

Udviklings- og Forenklingsstyrelsen

IAM-medarbejder

NEM IT-Solutions A/S

IT-driftskonsulent