Gå til innhold

Makro - Excel. Trenger hjelp!


Anbefalte innlegg

Ønsker å lage en liste ut i fra to tabeller.

Se bilde: Det oransje feltet er utgangspunktet, og det grønne er starten på en slik tabell jeg vil makroen skal kjøre.

 

post-30074-0-24324400-1323878453_thumb.jpg

 

Det vil si jeg ønsker makroen skal hente et navn fra gruppering 1-5 (øverste tabell). La oss si Per. Han er i gruppe 1 og 5. Dermed vil jeg at makroen skal legge tallene i fra tabell 2 i gruppe 1 og 5 som en liste nedover sammen med navnet hans. Ønsker at det samme skal skje med de andre navnene.

 

Har jobbet litt i VBA tidligere, men nå er det så lenge siden at jeg ikke helt vet hvor jeg skal starte :whistle:

 

Er det noen som har et forslag til hvordan å angripe denne utfordringen?

Endret av PedroFC
Lenke til kommentar
Videoannonse
Annonse

Hei!

 

Her er et forslag som kanskje kan fungere:

 

- Begynn med å hente unike navn og tilhørende kategorier fra den øverste tabellen. For å lagre dette kan du jo kanskje bruke en array av en Type som f.eks

 

Type Person

Navn as String

Kategorier(9) as Integer

End Type

 

Dim Personer(9) as Person

 

for å sørge for at det blir unikt må du for hver celle du leser inn sjekke om det navnet allerede finnes i Personer arrayen, hvis det ikke gjør det oppretter du e ny og hvis det gjør det så legger du til den kategorien du nå står i.

 

- Deretter går du igjennom den nederste tabellen og henter verdiene til de ulike kategoriene, disse kan du f.eks lagre i en 2d-array, kategoridata(katnr, verdinr) ellerno.

 

- Nå kan du gå igjennom alle personene i Personer, gå igjennom alle deres kategorier og hente verdiene fra den 2d-arrayen og skrive ut disse.

 

 

Ble muligens noe rotete forklart sånn midt på natta, men håper det kan gi litt ideer ihvertfall :)

Lenke til kommentar

Tusen takk for svaret.

 

Fant en annen måte å gjøre det jeg ville på nettet.

 

Sub aaa()

For Each ce In Range("A2:E4")

For j = 9 To Cells(Rows.Count, ce.Column).End(xlUp).Row

outrow = Cells(Rows.Count, "G").End(xlUp).Offset(1, 0).Row

Cells(outrow, "G").Value = ce

Cells(outrow, "H").Value = Cells(j, ce.Column)

Next j

Next ce

 

Range("G:H").Sort key1:=Range("G1"), order1:=xlAscending

End Sub

 

Funket glimrende..

Men jeg har også lyst til at det legger seg enda en kolonne i output som sier hvilke gruppe nummeret og tilhørende navn er hentet fra. For feks. Per vil jeg at det skal komme "Per","4646", "1". Når tallene er hentet fra gruppe 5: "Per","561","5"..osv.

 

Noen forslag på hvordan jeg kan innkludere dette i makroen ovenfor?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...