:
Function ev(f As Variant, A As Range, B As Range, C As Range) As Variant
Dim s As String
s = f
s = Replace(s, "A", "~A~")
s = Replace(s, "B", "~B~")
s = Replace(s, "C", "~C~")
s = Replace(s, "~A~", A.Address)
s = Replace(s, "~B~", B.Address)
s = Replace(s, "~C~", B.Address)
ev = Evaluate(s)
End Function
예를 들어 경우 발현은 A2이고, A, B, C의 값에 C2 : E2
=ev(A2,C2,D2,E2)
복귀 계산치
,
임의의 수의 변수를 허용하기 위해 변수 값 대신 A, B, C 대신 ParamArray를 사용하려고합니다.
약간 더 완전한 버전 :
Function ev(expr As Variant, VarNames As Range, varValues As Range) As Variant
Dim s As String
Dim i As Long
s = expr
For i = 1 To VarNames.Columns.Count
s = Replace(s, VarNames.Cells(1, i), "~" & VarNames.Cells(1, i) & "~")
Next
For i = 1 To VarNames.Columns.Count
s = Replace(s, "~" & VarNames.Cells(1, i) & "~", varValues.Cells(1, i).Address)
Next
ev = Evaluate(s)
End Function
사용법 : C1에서 변수 이름을 더한 상기와
동일한 데이터 : E1
=ev(A2,C1:E1,C2:E2)
그냥 셀에 합계를 둘 수 있었다, '= 5 * A-2 * B-4 * C'와 같이. –