본문 바로가기
WeekdayLife/excel

[엑셀VBA] Evaluate를 활용한 수식 복사(copy formula)

by JO_i 2024. 12. 6.




사용할만한 상황

아래와 같은 표가 있을 때, total 열을 반복적으로 복사를 해야하는 상황.....(예시가 적절하지는 않은 것 같다...)이 있다면, total을 산출하는 수식을 복사한다면 편할 수 있다.

 

일반적으로는 열을 옮겨서(잘라내기, cut) 수식을 유지하겠지만, 아주 간헐적으로 해당 내용을 그대로 사용하고 싶다면, 수식을 따로 text형태로 일일이 복사해줘야하는데, 이를 대신해줄만한 사용자 함수를 add-in으로 등록해 두면 사용할 수 있다.

 

테이블

 

 

 

예시

예시에서는 간단한 수식이지만, 가령 배열수식같이 복잡하다는 가정을 해보자.

 

테이블
테이블

 

 

 

아래 그림처럼, 사용자 함수를 통해 수식을 열 복사시 사용할 수 있다.

아래 그림에서 fxCopyFormula는 사용자 함수이다.

 

테이블
테이블

 

 

 

fxCopyFormula 함수는 vba의 Evaluate 함수를 사용한 사용자 함수이며, 코드는 아래와 같다.

구글링을 통해서 수식을 찾아보니 Application.Volatile 구문이 있는데, 재계산을 위한 구문인것 같은데, 왜 사용해야하는지 정확하게는 모르겠다. 시간될 때 찾아봐야곘다.

 

Function fxCopyFormula(rng As Range)
    Application.Volatile
    fxCopyFormula = Application.Caller.Parent.Evaluate(rng.Value)
End Function

 

 

 

xla파일을 만들어둔다면, 별 힘들이지 않고 사용할 수 있다.

 

끝.