Makro #1, Excel makro kurs

| | |

Lage uttrekk fra en liste ved hjelp av 16000 formler – eller en makro på 12 linjer

Svært mange har svart at det å lære om programmering av makro’er hadde vært kjempenyttig, så vi durer i vei. Jeg har tatt utgangspunkt i et spørsmål jeg ofte får:

«Hvordan kan jeg finne alle linjer i en liste som oppfyller et bestemt krav og lage en ny liste med bare disse linjene?»

Makro
Trekk ut alle linjer med etternavn som begynner på «Joha»

I dette tilfellet skal vi ha ut alle navn som begynner på f.eks «Joha».

I dette eksemplet har jeg laget en oversikt over etternavn og fornavn ut fra SSB’s oversikt over norske for- og etternavn og merket dem med kjønn.

Først har jeg laget 16.000 formler som løser oppgaven, og så gjør vi samme oppgave ved å skrive 12 linjer i VBA (Visual Basic For Applications). Makroen (eller subrutinen som jeg foretrekker å kalle det) er relativt enkel i leksjon 1, og så skal vi pusse på den og gjøre den morsommere etter hvert i de neste leksjonene.

Last ned regnearket her:  Makro01.xlsm (535 downloads )

Artikkelen fortsetter under videoen

Subrutinen ser slik ut når vi er ferdige:

Sub Navn()
 Linje = 1
 For x = 2 To 4000
  etternavn = Cells(x, 1)
  If Left(etternavn, 4) = «Joha» Then
      Linje = Linje + 1
     Cells(Linje, 12) = etternavn
    Cells(Linje, 11) = Cells(x, 2)
    Cells(Linje, 13) = Cells(x, 3)
  End If
 Next x
End Sub

Vi tar en kikk på hovedelementene i denne programsnutten:
Nr 1) og 2), SUB og END SUB

Dette markerer start og slutt på programmet. Sub betyr at det er en programrutine som utfører en oppgave og ikke returnerer noen verdi, i motsetning til funksjoner som alltid returnerer en verdi.

En SUB må alltid avsluttes med en END SUB

Nr 3) og 4) FOR … NEXT

Alle linjer mellom FOR og NEXT utføres det antall ganger som angis etter FOR. I dette tilfellet vil linjene mellom FOR og NEXT bli utført 3999 ganger, fra 2 til 4000. Verdien som X har i hver loop bruker vi til å telle oss  nedover rad for rad for å sjekke innholdet i linjene.

Har du en FOR i rutinen, må den alltid avsluttes med en NEXT

Nr 5) og 6) IF … THEN og END IF

Alle linjene mellom IF og END IF blir utført hvis betingelsen etter IF er oppfylt. I dette tilfellet er betingelsen

If Left(etternavn, 4) = «Joha» Then

som på godt norsk betyr

Hvis de fire venstre tegnene av etternavn er Joha, så (skal du)

I vårt tilfelle er denne betingelsen oppfylt i 7 tilfeller, og det er bare i disse tilfellene at linjene mellom IF og END IF blir utført.

CELLS()

Cells() er en av metodene vi kan bruke for å lese fra og skrive til cellene i regnearket. Første parameter angir radnummer og andre parameter angir kolonnenummer, slik at

N = Cells(2, 1) vil lese verdien i celle A2, som i eksemplet vårt er «Hansen». 

Similar Posts