Beräkna kalkybladsformler i VBA &
visa resultatet i celler
Här demonstreras en teknik eller mer korrekt en metod för att beräkna kalkylbladsfunktioner och formler och därefter visa utfallet direkt i en eller flera celler.Det sker mha EVALUATE och metoden kräver ett textuttryck som argument. Förfarandet kan prestandamässigt vara mer fördelaktigt än att direkt tilldela resultatcellerna formlerna.
Dock krävs det att formlerna är på engelska och Formelöversättaren kan avsevärt underlätta framtagningen av dessa.
I det första exemplet visas hur vi kan beräkna en relativ komplex OM-formel medan det andra exemplet visar hur vi hanterar matrisformler i detta sammanhang.
Option Explicit
Sub Berakna_Formel_Resultat_Cellen()
'© 2003 Alla rättigheter XL-Dennis
Dim wbBook As Workbook
Dim wsSheet As Worksheet
Dim rnTarget As Range
Dim vaValue As Variant
Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets("Blad1")
With wsSheet
Set rnTarget = .Range("A2")
End With
'Här tilldelas variabeln resultatet av formelberäkningen.
vaValue = Application.Evaluate( _
"IF(LEN(A1)<=1,"""", IF(ISNA(VLOOKUP(A1,B2:C100,2)),"""",VLOOKUP(A1,B2:C100,2)))")
'Så här ser formeln ut på svenska:
'=OM(LÄNGD(A1)<=1;""; OM(ÄRSAKNAD(LETARAD(A1;B2:C100;2));"";LETARAD(A1;B2:C100;2)))
'Här tilldelas cellen resultatet av formelberäkningen
rnTarget.Value = vaValue
End Sub
Option Explicit Sub Berakna_Matrisformel_Resultat_Cellen()
'© 2003 Alla rättigheter XL-Dennis
Dim wbBook As Workbook
Dim wsSheet As Worksheet
Dim rnTarget As Range
Dim vaValue As Variant
Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets("Blad1")
With wsSheet
Set rnTarget = .Range("B10")
End With
'Här tilldelas variabeln resultatet av matrisformelberäkningen.
vaValue = Application.Evaluate("SUM(IF(A3:A5=2,B3:B5,0))")
'Så här ser matrisformeln ut på svenska:
'SUMMA(OM(A3:A5=2;B3:B5;0))
'Här tilldelas cellen resultatet av formelberäkningen
rnTarget.Value = vaValue
End Sub