문자열을 수식처럼 평가하는 Excel 함수?


26

셀에 텍스트 문자열이 "11+5"있거나 심지어 "=11+5"저장되어 있다고 가정 해보십시오 . Excel에서 실제로 해당 문자열을 수식처럼 평가할 수있는 함수가 있습니까?

이것은 Excel에서 '동적'공식을 작성할 수있는 다른 프로젝트에 유용합니다.


3
Excel 은이 작업을 수행하는 EVALUATE () 함수를 가지고 있습니다. 그것은 오래 전 일이지만 새로운 엑셀에 대해 너무 확신하지 못합니다. 주위를 찌르고 내가 무언가를 찾을 수 있는지 봅니다.
aCuria

1
이 기능은 친숙하게 들리지만, 현재 사용중인 Excel2007에서는 해당 기능을 찾을 수 없습니다.
drapkin11

나는 그것을 찾을 수 없다 = /
aCuria

답변:


25

EVALUATE 모든 현재 버전에서 VBA로 제공

VBA 코드에 포함 시키거나 간단한 UDF로 랩핑하여 워크 시트 함수로 사용할 수 있습니다.

Function ev(r As Range) As Variant
    ev = Evaluate(r.Value)
End Function

기본적으로 전달 된 매개 변수의 값을 셀에 입력 된 것처럼 Excel 수식으로 처리합니다.

"11+5""=11+5"동일한 결과를 생성 할 것이다


1
Excel의 사용자 정의 함수에 대한 모든 것을 잊었습니다. 감사합니다.
drapkin11

Range 매개 변수를 String으로 변경하는 작은 수정 작업을 수행했으며 멋진 형태로 작동합니다. 감사합니다
Makah

16
=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의 결과를 반환 함)


1
아주 잘 알고 있습니다. = EVALUATE (Tablename [@ [column]]) 가장 유용한 Excel 도움말 또는 고급 자습서에서 쉽게 찾을 수없는 항목
Paschi

1
엑셀 2016 년 예이 호출 DE - 당신이 지역화 된 빌드를 사용하는 경우 ... 그리고 엑셀 수식 평소와 같이, 당신은 지역화 기능을 사용할 필요가=auswerten(...)
kiwiwings

6

@karel과 @Laurentiu Mirica의 큰 대답에는 중요한주의 사항이 있습니다. 참조 된 셀이 변경되지 않으면 평가 함수가 다시 계산되지 않습니다. 예를 들어, C1 셀에는 텍스트 "A1+B1"가 포함되고 D1에는 함수가 포함됩니다 =eval. A1 또는 B1의 값이 변경되면 D1 셀 이 다시 계산되지 않습니다 .

평가 문제의 시연

이는 휘발성 함수를 문자열 또는 평가 셀에 도입하여 해결할 수 있습니다. 이렇게하면 워크 시트를 다시 계산할 때마다 강제로 다시 계산됩니다. 예를 들어 C1 셀은로 대체 될 수 있습니다 =if(today(),"A1+B1",). 또는 D1을로 대체 할 수 있습니다 =if(today(),eval,). 모든 휘발성 기능이 수행되어야합니다.

세 번째이자 가장 간단한 해결책은 이름 관리자의 반 기능을 다음과 같이 변경하는 것입니다. =if(today(),evaluate(c1),)


고마워요. 이런 트릭을 찾고있었습니다. :)
Ben Personick

3
=indirect()

셀에서 (연결과 함께) 이것을 사용하면 매우 유용 할 수 있습니다.

예를 들어이 수식은 다른 워크 시트에 B5 셀의 값을 표시합니다 (이 워크 시트의 이름은 A2 셀에 저장 됨).

=INDIRECT(CONCATENATE(A2,"!B5"))

간접 작업을 수행하려면 외부 워크 시트가 열려 있어야합니다.


작동하지 않는 경우 #REF를 반환합니다
SIslam

8
INDIRECT는 수학 및 함수를 수행 할 수 있지만 셀 참조 작성의 일부로 만 가능합니다. 질문에서 일반적인 의미로는 사용할 수 없습니다.
fixer1234
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.