05. september 2006 - 15:49Der er
14 kommentarer og 1 løsning
makro til tabeloprettelse
Jeg har en tabel med kunder i række og varegruppe som kolonne. Denne tabel opdateres med data et andet sted fra, men er dynamisk, og kan ændre sig efter f.eks. hver måned.
Jeg skal danne en tabel, hvor jeg i hver række får kunde i en kolonne og varegruppe i næste kolonne. Hvis en kunde køber vare fra 10 varegrupper skal der altså være 10 rækker med kundenummer i kolonne A mens varegruppe 1-10 fremgår af kolonne B.
Hvis en kunde ikke køber fra en varegruppe, er dette felt tomt, og jeg vil ikke have kunden med, hvis ikke han køber noget fra varegruppen.
Jeg har ca. 500 rækker med kundenumre, som skal løbes igennem, men antallet af rækker kan vokse.
Jeg vil helst ikke bruge en pivottabel ,da jeg skal bruge resultaterne videre i nogle lopslagsfunktioner. Desuden vil jeg med en pivottabel også have "blanke" linier med.
Det er forudsat at din tabel ligger i A : K i ark4. Tilret selv området og arknavn. Resultattabellen indsættes i Ark7 som også skal rettes til dit eget ark
Sub nytabel() Dim nyeposter() Worksheets("Ark4").Activate maxrk = Range("a65536").End(xlUp).Row poster = Range("a2:k" & maxrk) kol = Range("iv2").End(xlToLeft).Column rk = UBound(poster) ReDim nyeposter(rk * kol, 1) For i = 2 To rk For j = 2 To kol If poster(i, j) <> "" Then nyeposter(k, 0) = poster(i, 1) nyeposter(k, 1) = poster(1, j) k = k + 1 End If Next j Next i Worksheets("Ark7").Range("a1:b" & UBound(nyeposter) + 1) = nyeposter End Sub
>>supertekst Forbindelsen mellem kundenr. i kolonne A og varegrupperne i rækken er en omsætning - altså et tal.
>> Mrjh Jeg har rettet din makro således: Sub nytabel() Dim nyeposter() Worksheets("FI_kunde").Activate maxrk = Range("a65536").End(xlUp).Row poster = Range("a49:h" & maxrk) kol = Range("iv2").End(xlToLeft).Column rk = UBound(poster) ReDim nyeposter(rk * kol, 1) For i = 50 To rk For j = 2 To kol If poster(i, j) <> "" Then nyeposter(h, 0) = poster(i, 1) nyeposter(h, 1) = poster(1, j) k = k + 1 End If Next j Next i Worksheets("Test").Range("a1:B" & UBound(nyeposter) + 1) = nyeposter End Sub
- jeg har ikke 100% styr på makroer, men min data-tabel har ordregivere i kolonne A, men tabelhovedet med varegrupper findes i række 49, dvs. første record med data er række 50.
Jeg har lavet et nyt ark, der hedder "Test", hvor jeg i første omgang ville have indsat tabellen. Umiddelbar fungerer det ikke :( Hvad gør jeg galt?
Dette er den samlede kode som jeg tror virker. Test lige
Sub nytabel() Dim nyeposter() Worksheets("FI_kunde").Activate maxrk = Range("a65536").End(xlUp).Row kol = Range("iv49").End(xlToLeft).Column poster = Range("a49:h" & maxrk) rk = UBound(poster) ReDim nyeposter(rk * kol, 1) For i = 2 To rk For j = 2 To kol If poster(i, j) <> "" Then nyeposter(k, 0) = poster(i, 1) nyeposter(k, 1) = poster(1, j) k = k + 1 End If Next j Next i Worksheets("Test").Range("a1:b" & UBound(nyeposter) + 1) = nyeposter 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.