- 최초 작성일: 2000-11-29
- 최종 수정일: 2026-09-29
- 조회수: 38 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 수식과 문자열 함께 표시하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
질문 하나
안녕하세요 엑셀러님!!
메일로만 받아 보다가 직접 홈을 방문한 건 처음이에요.
전에 따님 낳으시면 엑셀리스트로 지칭하실 거라고 말씀하셨는데 그 이후 소식은
아직 못들었네요.
아, 질문거리가 있었죠.
예산안 같은 걸 작성할 때 어려운 점이 너무 많아서 이렇게 찾아왔습니다.
각 예산별 산출근거를 만들 때,
과목: 단가 * 수량 * 일일사용량 * 사용일수 = … 등등을 계산하면서
곱하기 표시(*)를 넣어줘야 하는데 이 표시가 한 셀에 들어가면 계산이 안되잖아요.
그래서 곱하기도 각 셀에 넣어버렸는데 다른 방법은 없을까요? 이렇게 하면 상당히
보기싫고 자리만 많이 차지하거든요.
서로 간격이 벌어지고 또 산출근거가 여러 개인 것들과 둘 셋인 것들을 같이 쓰기가
어렵더라구요(계산한 결과는 같은 열에 들어와야 하니까 사이가 또 많이 벌어지고).
제 설명이 너무 부족한데 제가 작성한 아주 무식한 파일을 한번 보여드리고 싶네요.
엑셀을 문서편집기 정도로 밖에 사용을 못하고 있는게 너무 안타깝습니다.
Exceller의 2세(이름이 "예지"입니다)는 아주 잘 자라고 있습니다. 얼마 전에 100일을 맞이 했었지요. Pen Name을 Excelist로 할까 하다가 여성스럽게(?) 엑셀리앙이라고 부르기로 저 혼자 결정했습니다. 사돈 삼자고 하실 분이 있을 것 같아 조만간 사진을 공개할까 생각 중입니다. ^___^
그건 그렇고…
위의 질문하신 분은 Exceller와 동병상련을 겪고 있는 분이신가 봅니다(Exceller도 회사에서 예산업무를 담당하고 있지요). 그래서 무엇을 하시고자 하는지 이해가 가는군요. 일단 예제 자료를 하나 만들고…
수식과 문자열 함께 표시하기
핵심 요약
- & 연산자를 이용하면 항목명·수량·단가·횟수 같은 문자열과 계산 결과를 한 셀에 이어 붙일 수 있습니다.
- 숫자 결과를 보기 좋은 형식으로 표시할 때는 TEXT 함수를 함께 사용해 천 단위 구분 등의 서식을 적용할 수 있습니다.
- 반복되는 산출 근거 표현은 VBA 사용자 정의 함수로 만들어 수식 입력을 단순화할 수도 있습니다.
이러한 산출 근거를 이런 식으로 표시되도록 하고 싶다는 말씀이지요?
참고: 아래 표의 계 열과 마지막 열에는 결과 대신 수식이 표시되어 있습니다. 실제 결과는 도서인쇄비: 10명 * 5000원 * 2회 * 1부 = 100,000 / 신문구독료: 5명 * 10000원 * 2회 * 5부 = 500,000 / 접대비: 5명 * 50000원 * 3회 * 3부 = 2,250,000 / 급식비: 7명 * 5500원 * 2회 * 2부 = 154,000 / 일용노무비: 20명 * 100000원 * 5회 * 1부 = 10,000,000 입니다.
| 계정과목 | 산출 근거 | 계 | ||||
| 인원수 | 단가 | 회수 | 월평균 | |||
| 도서인쇄비 | 10 | 5000 | 2 | 1 | =C44*D44*E44*F44 | =B44&": "&C44&"명 * "&D44&"원 * "&E44&"회 * "&F44&"부 = "&TEXT(G44,"###,##0") |
| 신문구독료 | 5 | 10000 | 2 | 5 | =C45*D45*E45*F45 | =B45&": "&C45&"명 * "&D45&"원 * "&E45&"회 * "&F45&"부 = "&TEXT(G45,"###,##0") |
| 접대비 | 5 | 50000 | 3 | 3 | =C46*D46*E46*F46 | =B46&": "&C46&"명 * "&D46&"원 * "&E46&"회 * "&F46&"부 = "&TEXT(G46,"###,##0") |
| 급식비 | 7 | 5500 | 2 | 2 | =C47*D47*E47*F47 | =B47&": "&C47&"명 * "&D47&"원 * "&E47&"회 * "&F47&"부 = "&TEXT(G47,"###,##0") |
| 일용노무비 | 20 | 100000 | 5 | 1 | =C48*D48*E48*F48 | =B48&": "&C48&"명 * "&D48&"원 * "&E48&"회 * "&F48&"부 = "&TEXT(G48,"###,##0") |
공식을 살펴볼까요? 사실 공식을 보고 말고 할 것도 없습니다. 아주 오래 전에 배우셨던 Text() 함수를 & 연산자로 연결하였을 뿐입니다.
=B44 & ": " &C44 & "명 * " & D44 & "원 * " & E44 & "회 * " & F44 & "부 = " & TEXT(G44,"###,##0")
이것을 사용자 정의 함수를 만들어서 사용할 수도 있겠으나 이미 만들어진 내장함수가 있는데 굳이 다시 만들 필요는 없을 것입니다. 물론 사용자 정의 함수를 만들어서 아래와 같이 표현할 수도 있겠습니다. 결과는 똑같습니다.
=showall(B44,C44,D44,E44,F44,G44)
=showall(B45,C45,D45,E45,F45,G45)
=showall(B46,C46,D46,E46,F46,G46)
=showall(B47,C47,D47,E47,F47,G47)
=showall(B48,C48,D48,E48,F48,G48)
참고: 사용자 정의 함수 ShowAll은 결과 끝에 원을 붙이고 값이 0인 항목의 단위 문자열은 생략하므로, 위 내장함수 수식의 결과와 완전히 같지는 않습니다(예: 100,000원).
코드는 별로 어려운 부분이 없을 것이므로 이에 대한 해설은 생략합니다.
혹시라도 이해가 안가는 분들은 따로 질문하세요.
Function ShowAll(x As String, x1 As Integer, x2 As Currency, x3 As Integer, x4 As Integer, x5 As Currency)
Dim strX As String
Dim strX1 As String
Dim strX2 As String
Dim strX3 As String
Dim strX4 As String
Dim strX5 As String
If x1 = 0 Then strX1 = "" Else strX1 = "명 * "
If x2 = 0 Then strX2 = "" Else strX2 = "원 * "
If x3 = 0 Then strX3 = "" Else strX3 = "회 * "
If x4 = 0 Then strX4 = "" Else strX4 = "부 = "
If x5 = 0 Then strX5 = "" Else strX5 = "원"
ShowAll = x & ": " & Format(x1, "#") & strX1 & Format(x2, "#") & strX2 & Format(x3, "#") & _
strX3 & Format(x4, "#") & strX4 & Format(x5, "###,##0") & strX5
End Function
다음 시간에 또…
2000-11-29
정리 — 수식과 문자열 함께 표시하기
| 구분 | 내용 |
|---|---|
| 문제 | 곱하기 표시(*)를 넣은 산출 근거를 한 셀에 표시하고 계산도 하고 싶음 |
| 기본 수식 | =B44 & ": " &C44 & "명 * " & D44 & "원 * " & E44 & "회 * " & F44 & "부 = " & TEXT(G44,"###,##0") |
| 핵심 | & 연산자로 문자열과 값을 연결하고, TEXT 함수로 천 단위 콤마 서식 적용 |
| 사용자 정의 함수 | =showall(B44,C44,D44,E44,F44,G44) 형태로 사용할 수도 있음 |
자주 묻는 질문 (FAQ)
Q1. 곱하기 기호가 들어간 산출 근거를 한 셀에 표시하려면 어떻게 하나요?
계산은 별도 열에서 하고, 표시용 셀에서는 연결 연산자로 항목명, 값, 단위 문자열을 이어 붙입니다. 이렇게 하면 곱하기 표시를 셀마다 나눠 넣지 않아도 됩니다.
Q2. TEXT 함수는 왜 함께 사용하나요?
계산 결과에 천 단위 콤마 같은 서식을 적용해 문자열로 바꾸기 위해서입니다.
Q3. 사용자 정의 함수로도 만들 수 있나요?
가능합니다. ShowAll 함수를 만들어 항목명과 값들을 인수로 넘기면 같은 형태의 문자열을 돌려줍니다. 다만 내장함수로 충분히 처리되므로 굳이 만들 필요는 없습니다.
마치며
이미 있는 내장함수로 해결되는 일은 사용자 정의 함수를 만들기보다 & 연산자와 TEXT 함수의 조합으로 처리해 보시기 바랍니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.