Gå til innhold

[LØST!] Excel: Sette inn formel i celle AEi, hvor i er radnummer i en loop


Texazz

Anbefalte innlegg

Hei!

 

Jeg har en løkke som går fra i=3:8760, hvor i er nummer på raden.

 

I noen tilfeller (definert av en if-setning) ønsker jeg å sette AEi til å inneholde følgende formel:

=(Gi-Si*EXP((Gi-Si)/ACi))/(1-EXP((Gi-Si)/ACi))

Jeg har prøvd følgende VBA-kode, men den funker ikke:

Range("AE" & i).Formula = "=((""G"" & i)-(""S"" & i)*EXP(((""G"" % i)-(""S"" & i))/(""AC"" & i)))/(1-EXP(((""G"" & i)-(""S"" &i))/(""AC"" & i)))"

Noen som kan hjelpe en n00b?

 

 

ENDRET:

Løsningen er:

"=(G" & i & "-S" & i & ")*EXP((G" & i & "-S" & i & ")/AC" & i & ")/(1-EXP((G" & i & "-S" & i & ")/AC" & i & "))"
Endret av Texazz
Lenke til kommentar
Videoannonse
Annonse

Fint. Å bygge strenger i VBA er ikke alltid veldig enkelt. Men la meg gi deg et tips allikevel.

 

Spill inn en makro mens du setter inn formelen i en celle. Opptaket spiller inn formelen i R1C1-format. Det fine med en R1C1-formel er at det ikke spiller noen verdens rolle HVOR du setter den inn.

 

Såvidt jeg kan lese av eksemplet ditt vil dette virke for alle rader i :

Range("AE" & i).FormulaR1C1 = _
    "=(RC[-24]-RC[-12])*EXP((RC[-24]-RC[-12])/RC[-2])/(1-EXP((RC[-24]-RC[-12])/RC[-2]))"

Beste hilsen Harald

Lenke til kommentar

Fint. Å bygge strenger i VBA er ikke alltid veldig enkelt. Men la meg gi deg et tips allikevel.

 

Spill inn en makro mens du setter inn formelen i en celle. Opptaket spiller inn formelen i R1C1-format. Det fine med en R1C1-formel er at det ikke spiller noen verdens rolle HVOR du setter den inn.

 

Såvidt jeg kan lese av eksemplet ditt vil dette virke for alle rader i :

Range("AE" & i).FormulaR1C1 = _
    "=(RC[-24]-RC[-12])*EXP((RC[-24]-RC[-12])/RC[-2])/(1-EXP((RC[-24]-RC[-12])/RC[-2]))"

Beste hilsen Harald

Takk for tilbakemelding. Er det slik at R1C1-metoden bruker en celle som referanse, og flytter seg x celler og y celler bort fra den cellen (i dette tilfellet AE)?

Lenke til kommentar

Bra tenkt. Referansen er cella formelen står i.

 

R betyr "samme rad som denne formelen". R[-1] betyr raden over og R[1] betyr raden under.

R1 betyr rad 1, altså samme som $1.

 

C betyr samme kolonne som denne formelen. C[-1] betyr en kolonne til venstre og C[1] betyr en kolonne til høyre. C1 betyr kolonne 1, altså $A.

 

=RC[-1] betyr altså "samme som cella rett til venstre". R1C1 betyr $A$1.

 

Dette er som sagt utrolig praktisk når kode skal sette inn formler. Denne

=SUM(R1C:R[-1]C)

betyr "summen av alle cellene over", uansett hvor du setter den inn (unntatt i rad 1, da feiler den med sirkelreferanse).

 

Såvidt jeg vet regner Excel internt i R1C1-format. A1-addresseringen er et lag utenpå for lesevennlighetens skyld. Man kan sette Excel i ren R1C1-modus via Alternativer/Options. Dette valget følger alle filer du lagrer når du bruker dette modus, og en annen bruker av denne filen vil si "bokstavene øverst har blitt til tall" etter at filen er åpnet.

 

Beste hilsen Harald

 

(Edit noen skrivefeiler)

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å
×
×
  • Opprett ny...