셀에 텍스트 문자열이 "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(
원하는 셀을 작성 하고 클릭하십시오 (상대 참조를 유지하는 것이 가장 좋습니다). - 로 공식을 완성하십시오
)
- NAME을 지정하십시오 (이 예제에서는 그냥 호출하겠습니다
eva
). - 확인을 클릭하십시오 .
이제 B1을 선택하고 A1을 참조한다고 가정 해 봅시다. A1에서는 ” 1 + 1 “을 =eva
입력 할 수 있고 B1에서는 쓰기를합니다 . 일단 ENTER를 누르면 B1 값이됩니다 2
. 이름 관리자의 참조는 상대적이므로, =eva
하나의 셀 하나를 원하는 위치에서 남겨둔 셀의 평가를 얻는 데 사용할 수 있습니다 . (예 : B2에서 =eva
셀 A2의 결과를 반환 함)
답변
@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"))
간접 작업을 수행하려면 외부 워크 시트가 열려 있어야합니다.