셀에 텍스트 문자열이 "11+5"
있거나 심지어 "=11+5"
저장되어 있다고 가정 해보십시오 . Excel에서 실제로 해당 문자열을 수식처럼 평가할 수있는 함수가 있습니까?
이것은 Excel에서 '동적'공식을 작성할 수있는 다른 프로젝트에 유용합니다.
셀에 텍스트 문자열이 "11+5"
있거나 심지어 "=11+5"
저장되어 있다고 가정 해보십시오 . Excel에서 실제로 해당 문자열을 수식처럼 평가할 수있는 함수가 있습니까?
이것은 Excel에서 '동적'공식을 작성할 수있는 다른 프로젝트에 유용합니다.
답변:
EVALUATE
모든 현재 버전에서 VBA로 제공
VBA 코드에 포함 시키거나 간단한 UDF로 랩핑하여 워크 시트 함수로 사용할 수 있습니다.
Function ev(r As Range) As Variant
ev = Evaluate(r.Value)
End Function
기본적으로 전달 된 매개 변수의 값을 셀에 입력 된 것처럼 Excel 수식으로 처리합니다.
"11+5"
과 "=11+5"
동일한 결과를 생성 할 것이다
=evaluate(put_reference[s]_here)
이것은 반 기능이며 이름 관리자 에서만 사용할 수 있습니다 .
이것은 당신이 그것을 사용할 수있는 방법입니다 :
셀을 가리키고 이름 관리자를 엽니 다 (FORMULAS 탭 또는 CTRL + F3 클릭).
=evaluate(
원하는 셀을 작성 하고 클릭하십시오 (상대 참조를 유지하는 것이 가장 좋습니다).
)
eva
). 이제 B1을 선택하고 A1을 참조한다고 가정 해 봅시다. A1에서는 " 1 + 1 "을 =eva
입력 할 수 있고 B1에서는 쓰기를합니다 . 일단 ENTER를 누르면 B1 값이됩니다 2
. 이름 관리자의 참조는 상대적이므로, =eva
하나의 셀 하나를 원하는 위치에서 남겨둔 셀의 평가를 얻는 데 사용할 수 있습니다 . (예 : B2에서 =eva
셀 A2의 결과를 반환 함)
=auswerten(...)
@karel과 @Laurentiu Mirica의 큰 대답에는 중요한주의 사항이 있습니다. 참조 된 셀이 변경되지 않으면 평가 함수가 다시 계산되지 않습니다. 예를 들어, C1 셀에는 텍스트 "A1+B1"
가 포함되고 D1에는 함수가 포함됩니다 =eval
. A1 또는 B1의 값이 변경되면 D1 셀 이 다시 계산되지 않습니다 .
이는 휘발성 함수를 문자열 또는 평가 셀에 도입하여 해결할 수 있습니다. 이렇게하면 워크 시트를 다시 계산할 때마다 강제로 다시 계산됩니다. 예를 들어 C1 셀은로 대체 될 수 있습니다 =if(today(),"A1+B1",)
. 또는 D1을로 대체 할 수 있습니다 =if(today(),eval,)
. 모든 휘발성 기능이 수행되어야합니다.
세 번째이자 가장 간단한 해결책은 이름 관리자의 반 기능을 다음과 같이 변경하는 것입니다. =if(today(),evaluate(c1),)
=indirect()
셀에서 (연결과 함께) 이것을 사용하면 매우 유용 할 수 있습니다.
예를 들어이 수식은 다른 워크 시트에 B5 셀의 값을 표시합니다 (이 워크 시트의 이름은 A2 셀에 저장 됨).
=INDIRECT(CONCATENATE(A2,"!B5"))
간접 작업을 수행하려면 외부 워크 시트가 열려 있어야합니다.