Excel

문자열로 된 수식의 값 계산하기

별동산 2024. 3. 18. 13:22
반응형

1. 문제

아래와 같이 산출식이 *, +, 괄호 등으로 연결되어 표시되어 있을 경우 산출식의 결과 값을 F열, G열과 H열에 모두 표시하려고 하면 어떻게 해야 할까요?

 

 

 

2. Evaluate 함수

가. Evaluate

Evaluate 함수는 원래 VBA에 있는 함수인데 이름 관리자를 이용해서 사용할 수 있습니다.

Lambda와 비슷합니다.

 

Evaluate는 수식을 계산해서 결괏값을 돌려주는 역할을 합니다.

개발 도구 탭에서 Visual Basic 명령을 눌러 VB 에디터로 들어간 후

직접 실행창에 ?evaluate("2*3")이라고 입력하고 엔터 키를 누르면 2*3의 결괏값인 6이 반환됩니다.

 

 

나. 이름 정의 

F5셀을 선택한 다음

수식 탭의 정의된 이름 그룹에서 이름 정의를 클릭하거나, 이름 관리자를 열고 새 이름을 클릭합니다.

 

이름 란의 이름을 계산으로 변경하고,

참조 대상에 evaluate를 입력한 다음

F5셀이 절대 참조로 되어 있는데, E열만 고정되도록 E앞에만 $를 붙이고, 5 앞의 $표시는 지워서

$E5로 수정하고, 확인 버튼을 누릅니다.

 

그러면 매크로 사용 통합 문서에 저장해야 한다는 메시지가 표시됩니다.

 

파일 저장 시 파일 형식을 *.xlsm으로 바꿔야 합니다.

 

Sheet1!는 지워도 다시 생기니 그대로 두기 바랍니다.

수식 - 이름 관리자를 클릭하면 아래와 같이

계산이란 이름으로 값 란에 1*2라고 표시되고,

아래 참조 대상에는 =EVALUATE(Sheet1!$E5)라고 Sheet1!가 포함되어 있습니다.

 

다. 수식 입력

F5셀에 =계산이라고 입력하고 엔터 키를 누르면 

1*2의 결괏값 2가 반환됩니다.

 

이제 F5셀의 채우기 핸들을 오른쪽으로 끌고,

아래로 끌어서 H18셀까지 모두 입력합니다.

 

E열을 참조하므로 F열과 G열, H열의 값이 같고,

행 별로 계산이 잘 되었는지 몇 개만 살펴보면

 

E9셀의 산출식이 (1.7*0.1)+(30*0.1)로

0.17+3 = 3.17로 맞고,

 

E10의 산출식이 ((1.7/0.25)+(1))*30인데,

E10셀의 산출식을 복사한 후 i10셀에  =을 입력하고, 붙여 넣은 후 엔터키를 누르니

결괏값이 317.2로 F10셀과 같습니다.

 

라. 저장

위에서 얘기한 바와 같이

파일 형식을 'Excel 매크로 사용 통합 문서(*. xlsm)로 변경하고 저장을 해야 합니다.

 

문자열 계산(완성).xlsm
0.01MB

반응형