09. september 2020 - 21:03Der 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 ....
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
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
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.