27. marts 2009 - 09:42Der er
4 kommentarer og 1 løsning
Excel macro konverter linier til flere linier afhængig af værdi i oprindelige linier
Hej eksperter,
Jeg har forsøgt lidt frem og tilbage men uden held og tror jeg behøver en skræddersyet VBA macro :(
Er det muligt at lave en macro der kan konvertere følgende array fra linier med værdier fra 1 og opefter i sidste kolonne én lang list af linier med værdien 1 i hver, jeg illustrerer input:
fange hver linie, se i kolonne Qty, hvis over en kopiere linien og indsætte antal gang som der er Qty mens Qty for hver af disse linier ændres til 1... dvs. output:
Tusind tak for hurtig svar, dog har jeg en lille fejl jeg ikke kan grejle hvorfor, output giver en linie for meget for alle linier der havde Qty over 1:
Sub Macro1() xllin = 2 Do While Trim(Sheets("Sheet1").Range("A" & xllin)) <> "" If Sheets("Sheet1").Range("D" & xllin) > 1 Then nylin = Sheets("Sheet1").Range("D" & xllin) Sheets("Sheet1").Range("D" & xllin) = 1 Sheets("Sheet1").Range("A" & xllin & ":D" & xllin).Copy Sheets("Sheet1").Range("A" & (xllin + 1) & ":A" & (xllin + nylin)).Select Selection.Insert Shift:=xlDown Application.CutCopyMode = False xllin = xllin + nylin nylin = 0 End If xllin = xllin + 1 Loop End Sub
For eksempel så får denne korrekt: Input A1 B1 C3 1 Output A1 B1 C3 1
Men med mere end 1: Input A1 B1 C1 2 Output A1 B1 C1 1 A1 B1 C1 1 A1 B1 C1 1
Der skulle kun være 2 linier i output... har det noget med Sheets("Sheet1").Range("A" & xllin & ":D" & xllin).Copy der skal have D - 1?
Det er fordi jeg så har misforstået opgaven. Når du skriver "hvis over en kopiere linien og indsætte antal gang som der er Qty" indsætter jeg jo 2 når der står Qty=2 Du vil have indsat Qty-1.
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.