2010-11-28 3 views
1

함수를 만들어이 값 : 다른 세포에서엑셀 : 세포를 분석하고, 예를 들어, I는 일부 셀이

5 * A-2 * B-4 * C

A, B, C 값을 넣을 것입니다. 값을 세는 셀을 추가하고 싶습니다. 예를 들어, A의 값이 2이고 B의 값이 3이고 C의 값이 1 인 셀이있는 경우, 값 0을 계산하고 값을 넣을 셀이 더 필요합니다. 5 * 2-2 * 3-4 * 1의 결과). 가능한 변수는 A, B 및 C이지만 모든 셀에 포함될 필요는 없습니다 (예 : 일부 셀은 5 * A-3 * C 일 수 있음).

그럴 수 있습니까? 누구든지 그 기능을 작성하는 방법을 알고 있습니까?

P. 수백 개의 셀이 있으므로 다른 셀에서 수동 값을 분리 할 수 ​​없습니다.

감사합니다.

+0

그냥 셀에 합계를 둘 수 있었다, '= 5 * A-2 * B-4 * C'와 같이. –

답변

0

:

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) 
1

Saladin Akara의 의견은 가장 간단한 해결책을 제시합니다. A, B 및 C에 대해 명명 된 수식을 정의하십시오 (Excel 도움말 항목 "이름 사용"참조). 그러면 다른 모든 셀에 이러한 명명 된 값을 사용하는 수식을 포함 할 수 있습니다.

예를 들어 셀의 수식을보고 편집하고 다른 셀의 수식 값을 계산하려는 경우, 충분하지 않은 경우 구문 분석 할 필요없이 Excel의 기본 제공 평가기를 사용할 수 있습니다 너 자신의 공식. 이렇게하는 가장 쉬운 방법은 Application 개체 메서드를 사용하는 것입니다. (다시, 도움말을 참조하십시오.) 찰스 윌리엄스는 여기에 엑셀 식 평가 자신의 웹 사이트에 예제 코드가 있습니다 http://www.decisionmodels.com/calcsecretsh.htm

가 넘어을, 당신은 어떤 이름을 정의하지 않고 (스칼라) 매개 변수와 식을 평가하는 Application.Evaluate를 사용하고 기초적인 문자열 교체를 수행하여 공식을 실제로 구문 분석하지 않고도 이 웹에 대한 몇 가지 예입니다 만, 더그 젠킨스에서 아주 좋은 일이 여기에 있습니다 : http://newtonexcelbach.wordpress.com/2008/04/22/evaluate-function/이는 VBA 기능 EVALUTE

간단한 예제와 함께 할 수