- 최초 작성일: 2025-01-24
- 최종 수정일: 2026-09-27
- 조회수: 51 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: VBA 파워 코딩 245회 - 수식 표시
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
영어 선생님이 영어를 잘 하는 이유
영어 선생님이 영어를 잘하는 이유는 매일 일정 정도의 시간을 영어를 가르치는 데 사용하기 때문이다. 글쓰기도 마찬가지다. 시간을 내서 정기적으로 쓰면 나도 모르는 사이, 글쓰기 능력이 향상된다.
어느 시인의 말입니다(오은 시인).
비단 영어나 글쓰기 뿐이겠습니까. 엑셀이나 VBA도 크게 다르지 않을 듯합니다. 엑셀과 VBA를 잘 하려면, 자신이 알고 있는 지식을 자꾸 남들에게 전달해 보세요. 특히 게시판에 올라온 질문을 여러 각도에서 고민해 보고 꾸준히 답변을 달아 보세요. 1) 해법을 여러 각도에서 고민하는 과정에서 문제 해결력이 높아지고, 2) 꾸준히 답하는 과정에서 자신이 알고 있는 것을 계속 리마인드하게 되어 잊을래야 잊을 수가 없게 됩니다.
수식을 셀에 그대로 표시해주는 Code
핵심 요약: 수식을 셀 옆에 그대로 표시하는 두 가지 방법
엑셀 2013 이상에서는 FORMULATEXT 함수로 수식을 문자열로 표시할 수 있고, 이전 버전에서는 Range의 Formula 속성을 반환하는 사용자 정의 함수를 만들어 쓸 수 있습니다.
- 방법 1: =FORMULATEXT(E7) (수식이 아닌 셀은 #N/A 오류)
- 방법 2: 사용자 정의 함수 ShowFormula (rngX.Formula 반환)
- 보완: ShowFormula2 - HasArray로 배열 수식, HasFormula로 일반 수식을 구분
- 간단한 대안: 수식 앞에 작은따옴표(')나 공백을 삽입
수식을 셀 옆에 표시하고 싶을 때
셀에 입력되어 있는 수식(Formula)을 화면에 표시하고자 할 때, 수식 앞에 작은 따옴표(')나 공백을 삽입하고 수식을 작성하면 됩니다.
하지만 수식이 많거나 수식의 내용을 별도로 표시하고자 할 때에는 이 방법도 불편합니다. 다음 그림에서 빨간 네모 부분과 같이 수식이 입력된 셀 옆에 수식을 표시하려면 어떻게 할까요?
[사족] 면적이나 원둘레 길이를 구하는 공식이 정확한지는 자신할 수 없습니다(졸업한 지 4반세기가 다 지나가는 관계로...). 지금 중요한 것은 공식이 맞느냐 아니냐가 아니지요. 손가락으로 달을 가리키면 그 방향을 봐야 하는데 공연히 손가락 끝을 보며 따지는 분은 없겠죠? ^^;
[방법 1] 일반 함수 사용
'찾기/참조 영역' 함수 중에 'Formulatext'라는 것이 있습니다. 엑셀 2013 버전에서 추가된 함수로, '수식을 문자열로 반환' 해주는 함수입니다.
사용 방법은 간단합니다. 예를 들어, G7 셀에 =FORMULATEXT(E7)라고 입력하면 E7 셀에 들어있는 수식의 내용이 표시됩니다. 단, 수식이 아닌 문자열이 입력된 셀을 참조 범위로 지정하면 '#N/A' 오류가 발생합니다.
이번 강좌 여기서 끝!... 하면 성의 없다고 욕을 얻어먹을 것이므로 진도를 조금 더 나갑니다.^^;
[방법 2] 사용자 정의 함수 사용
앞에서 언급한 것처럼 Formulatext 함수는 엑셀 2013 버전부터 제공됩니다. 그 이전 버전을 사용하고 있다면... 간단한 VBA 코딩을 통해 가능합니다.
(1) <Alt> + <F11> 키를 눌러 Visual Basic Editor를 띄웁니다.
(2) 모듈에 다음과 같은 사용자 정의 함수를 작성합니다.
Function ShowFormula(rngX As Range) As String
ShowFormula = rngX.Formula ' 지정한 셀에 들어있는 수식을 함수의 결과값으로 반환
End Function
참고: 원문 코드 수정
원문의 첫 번째 함수는 마지막 줄이 Function으로만 되어 있어 End Function으로 바로잡았습니다. 주석의 "수식을 의 함수결과값으로"도 "수식을 함수의 결과값으로"로 고쳤습니다.
(3) 위 사용자 정의 함수는 일반 수식에 대해서는 잘 작동합니다만 배열 수식(Array Formula)이나 문자열이 들어 있는 셀인 경우에는 원하는 결과를 얻을 수 없습니다. 이 문제를 보완한 코드입니다.
Function ShowFormula2(XXX As Range)
Dim strTemp As String ' 결과값을 돌려줄 문자열 변수
If XXX.HasArray Then ' 만약 수식이 배열 수식이라면...
strTemp = "{" & XXX.Formula & "}" ' 수식 앞뒤에 중괄호를 추가한
' 문자열을 변수에 저장
ElseIf XXX.HasFormula Then ' 만약 일반 수식이 들어있으면...
strTemp = XXX.Formula ' 수식을 문자열 변수에 저장
Else ' 이도 저도 아니면...
strTemp = "그냥 문자열임" ' '그냥 문자열임'이라는 문자열을
' 변수에 저장
End If
ShowFormula2 = strTemp ' 상황별로 strTemp에 담긴 값을
' 함수의 결과로 돌려줌
End Function
'보기 좋은 떡이 맛도 좋다'는 속담이 있습니다만, 그러기 위해서는 그만큼 공수가 더 들어가야 합니다. 세상에 공짜 점심은 없는 법이지요.
참고: 이미지에 대하여
이 글은 원래 네이버 포스트에 게재되었던 글로, 네이버 포스트 서비스 종료로 네이버 블로그로 옮기는 과정에서 원본 이미지가 소실되었습니다. 위 이미지는 본문 설명을 바탕으로 당시 화면 구성을 재구성한 예시 이미지이며, 실제 엑셀 화면과 세부 디자인(버전별 UI)은 다를 수 있습니다. 이미지 속 도형의 넓이와 둘레 표의 항목과 수치는 예시입니다.
정리 — 수식을 셀에 표시하는 방법
| 방법 | 특징 |
|---|---|
| 작은따옴표(') 또는 공백 | 수식 앞에 붙여 입력. 수식이 많으면 불편 |
| FORMULATEXT 함수 | 엑셀 2013 이상. 수식이 아닌 셀을 참조하면 #N/A 오류 |
| ShowFormula (사용자 정의 함수) | 이전 버전에서도 사용 가능. Range.Formula 속성 반환 |
| ShowFormula2 (보완 버전) | 배열 수식은 중괄호를 붙이고, 수식이 없으면 '그냥 문자열임'을 반환 |
자주 묻는 질문 (FAQ)
Q1. 셀에 입력된 수식을 다른 셀에 그대로 표시하려면 어떻게 하나요?
엑셀 2013 이상에서는 FORMULATEXT 함수를 사용합니다. 예를 들어 G7 셀에 =FORMULATEXT(E7)이라고 입력하면 E7 셀에 들어 있는 수식의 내용이 표시됩니다.
Q2. FORMULATEXT 함수에서 #N/A 오류가 발생합니다.
참조한 셀에 수식이 아닌 문자열이 입력되어 있을 때 #N/A 오류가 발생합니다. 수식이 들어 있는 셀을 참조 범위로 지정하세요.
Q3. 엑셀 2013 이전 버전에서는 어떻게 하나요?
VBA로 사용자 정의 함수를 만들면 됩니다. Range 개체의 Formula 속성을 함수 결과값으로 반환하는 ShowFormula 함수를 만들거나, 배열 수식과 문자열까지 처리하는 ShowFormula2 함수를 사용합니다.
마치며
수식을 옆에 그대로 보여 주면 설명 자료를 만들 때 훨씬 편합니다. 버전에 맞는 방법을 골라 써 보세요!
VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 사이트 정문 왼쪽에 있는 'VBA 강좌 - VBA 입문강좌'를 읽어보시면 이해가 빠릅니다.