Gå til innhold

Anbefalte innlegg

Hei :)

Lurte på om noen kunne fortelle meg om det er mulig å bruke variabler i en range i en makro i Excel?

 

Eks.

Dim nr As Integer

 

sumproduct(--(s2:s+nr<0),--(Q2:Q+nr=84)

 

Syntaksen med +nr er jo sikkert ikke korrekt, men er ment som en illustrasjon på hva jeg ønsker å gjøre.

 

aspedott

Lenke til kommentar
Videoannonse
Annonse

Hvis du spør om det jeg tror du spør om; jajamenn. Men først, ikke bruk Integer i VBA, bruk Long. Integer går bare til 32k og forsinker dessuten koden, den skal nemlig konverteres til Long i runtime. Long er altså greia.

 

Dim Rng As Range

Dim Nr As Long

Nr = 1958

Set Rng = Sheets(1).Range("S2:S" & Nr)

 

MsgBox "Definert Rng til " & _

Rng.Address(False, False, xlA1) & Chr(10) & _

Rng.Rows.Count & " rader"

 

HTH. Beste hilsen Harald

Lenke til kommentar

Det var akkurat det jeg ville vite, takker så mye :)

 

Jeg har selvfølgelig fått et oppfølgingsproblem som det hadde vært veldig fint å få hjelp til:

 

Dim Rng As Range

Dim Nr As Long

Nr = sisterad

Set Rng = Sheets("Hoved").Range("S2:S" & Nr)

 

Range("AL5").Select

ActiveCell.FormulaR1C1 = WorksheetFunction.CountIf(Rng, "<0")

Range("AM5").Select

ActiveCell.Formula = "=SumProduct(--(Rng<0),--(Q2:Q1500=84))"

 

Countif virker helt fint men sumproduct virker ikke. Den virker helt fint hvis jeg bytter ut Rng med S2:s1500. Det er noe vesentlig jeg ikke skjønner med sumproduct tror jeg.

 

aspedott

Lenke til kommentar

Nei problemet er et annet. I den første skriver du inn en formel som en formel -jeg er overrasket over at det der virker. I den andre skriver du inn en tekststreng som en formel, merk at du har ironi-tegn " " rundt, det betyr "tekst, bokstavelig dette". Da må du erstatte det som skal oversettes, celleområdet. Prøv (hvis Rng er i samme ark som formelen)

 

ActiveCell.Formula = "=SumProduct(--(" & Rng.Address & "<0),--(Q2:Q1500=84))"

 

Til slutt; ikke select greier, det er langsomt og stygt og lite brukervennlig. De aller fleste ting kan gjøres uten å endre aktivt ark eller aktiv celle:

 

Range("AM5").Formula = "=SumProduct.... osv

 

Edit: Nei det er et problem til. Rng og Q2:Q1500 må ha like mange rader. Du må f.eks. erstatte 1500 med Nr, eller helst definere onrådet på samme måte som Rng.

 

HTH. Beste hilsen Harald

Endret av Harald Staff
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...