• 최초 작성일: 2018-01-08
  • 최종 수정일: 2026-09-21
  • 조회수: 74 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 함수로 만든 경품추첨기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

2018년 무술년 새해가 밝았습니다.

새해가 되면 복이 오기를, 안 좋은 일은 내게 오지 않기를 기원하는 것이 인지상정입니다. 하지만 그것보다 더 현실적이고 중요한 것은,

"어떤 일이 생겨도 평정심을 유지하고 헤쳐나갈 수 있는 강인한 정신력을 기르는 것"

이 아닐까 생각합니다. 혹자는 '멘탈'이라고도 하고, 또 누군가는 '회복탄력성(Resilience)'이라고도 부르는 그것 말이지요.

하여튼, 어쨌거나, 그럼에도 불구하고… 다들 소원성취하시고 뜻하신 바를 다 이루는 한 해가 되시길 기원합니다.

// 메일 하나

…(중략) Exceller님께서 예전에 만드신 프로그램 중에 경품추첨하는 프로그램을 보았습니다.
응용을 해볼려고 아무리 해도 지식이 짧아서 뜻대로 안됩니다.
저는 매크로나 VBA는 할 줄 몰라서 그러는데 혹시 함수나 다른 방법을 통해 가능할까요?
새해에도 건강하시고 좋은 강좌도 많이 많이 올려주세요…

연배가 좀 있는 분의 질문입니다. 무슨 일이든 궁하면 통하게 마련이죠. VBA로 할 때보다 시각적인 효과나 재미는 좀 덜합니다만, 함수만으로도 충분히 가능합니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 지음

📊 신간 전자책(PDF) · 287쪽 · 13500원

엑셀 대시보드를 만드는 최적의 '표준 3계층 구조'

  • 3초 안에 읽히는 화면 설계 감각 습득
  • Microsoft Excel MVP의 실전 노하우 수록
  • 중간마진 없는 합리적인 가격, 오직 아이엑셀러에서만!
지금 구매하기 완성 화면 보기

엑셀 경품추첨기 만들기, 함수 3개면 끝

핵심 요약: 함수 3개로 만드는 경품추첨기

VBA나 매크로 없이 함수만으로 F9 키를 누르거나 재계산이 일어날 때마다 당첨자를 선정해 주는 경품추첨기를 만들 수 있습니다.

  • 사용 함수: INDEX, RANDBETWEEN, COUNTA 세 가지입니다.
  • 핵심 수식: ="축하합니다. " & INDEX(B33:B52, RANDBETWEEN(1,COUNTA(B33:B52))) & " 님!"
  • 동작 원리: COUNTA로 명단 인원수를 구해 RANDBETWEEN의 top 인수로 사용하고, 나온 난수 순번의 이름을 INDEX로 가져옵니다.
  • 참고: VBA로 만들 때보다 시각적인 효과나 재미는 다소 덜합니다.

1. 명단과 결과 화면 — 재계산할 때마다 새 당첨자 선정

아래와 같은 데이터가 있다고 할 때, F9 키를 누르거나 재계산(recalculation)이 일어날 때마다 당첨자를 선정해 줍니다. 예제에서는 명단이 A32:B52 범위(32행은 머리글, 33~52행에 20명)에 있고, 당첨 문구는 D32 셀에 표시됩니다.

사번 성명
A300016백은희
A410019마원나
A410020김근수
A410021전미영
A410022김현철
B400023이상원
B001224김덕주
B000025박진환
B010026이병철
A000027조철선
A231012안세민
C000028김태현
C000029서유현
C300015김경원
C451030연대성
C000031김서형
D410017이수진
A369647최지혜
D369648서준희
D000034한효주

D32 셀에는 아래와 같은 당첨 메시지가 표시됩니다. 재계산이 일어날 때마다 다른 사람이 표시될 수 있습니다.

축하합니다. 백은희 님!

2. 사용된 수식 — INDEX, RANDBETWEEN, COUNTA

사용된 수식은 다음과 같습니다.

="축하합니다. " & INDEX(B33:B52, RANDBETWEEN(1,COUNTA(B33:B52))) & " 님!"

INDEX와 RANDBETWEEN, COUNTA 함수가 사용되었습니다. 아마 모르는 함수는 하나도 없으리라 생각합니다. RANDBETWEEN 함수의 사용 형태를 유의해서 보시면 되겠습니다.

3. RANDBETWEEN 함수 — 두 수 사이의 난수(정수) 구하기

이 함수는 지정한 두 수 사이의 난수(정수 형태)를 구해 줍니다.

사용 형식
RANDBETWEEN(bottom, top)
인수 설명
bottom 반환할 작은 정수
top 반환할 큰 정수

4. COUNTA 함수 — 명단 인원수를 top 인수로 활용하기

COUNTA 함수를 이용하여 지정한 범위 내에서 값이 들어있는 셀의 수를 구한 다음, 이것을 RANDBETWEEN 함수의 top 인수로 활용하였습니다.

정리 — 수식 구성 요소 한눈에 보기

이 수식이 어떤 순서로 당첨자를 만들어 내는지 표로 정리했습니다.

구성 요소 하는 일
COUNTA(B33:B52) 명단 범위에서 값이 들어 있는 셀의 수(예제에서는 20)를 구함
RANDBETWEEN(1, 인원수) 1부터 인원수 사이의 난수(정수)를 구함
INDEX(B33:B52, 난수) 명단에서 그 순번에 해당하는 성명을 가져옴
"축하합니다. " & … & " 님!" & 연산자로 앞뒤 문구를 연결해 최종 메시지를 완성함

자주 묻는 질문 (FAQ)

Q1. 경품추첨기의 당첨자는 언제 바뀌나요?

F9 키를 누르거나 재계산(recalculation)이 일어날 때마다 새로운 당첨자가 선정됩니다. 재계산은 워크시트에서 값을 입력하거나 수정할 때도 일어날 수 있으므로, 당첨자를 확정하려면 결과 셀을 복사해 값으로 붙여 넣어 두는 것이 좋습니다.

Q2. VBA나 매크로를 몰라도 경품추첨기를 만들 수 있나요?

네. 이 예제는 INDEX, RANDBETWEEN, COUNTA 함수만 사용하므로 VBA나 매크로 지식이 필요 없습니다. 다만 VBA로 만들 때보다 시각적인 효과나 재미는 다소 덜합니다.

Q3. 명단 인원이 바뀌면 수식을 고쳐야 하나요?

인원수는 COUNTA 함수가 범위 안에서 값이 들어 있는 셀의 수로 계산해 주므로 따로 고치지 않아도 됩니다. 다만 수식에 지정한 명단 범위(B33:B52) 안에서 빈 셀 없이 위에서부터 이어서 입력해야 하며, 명단이 이 범위를 벗어나 늘어나면 범위도 함께 넓혀 주어야 합니다.

마치며

늘 강조합니다만, 함수는 알고 있는 가짓수가 많은 게 중요한 게 아니라 알고 있는 것을 어떻게 적재적소에 활용하는가가 더 중요합니다. 물론 많은 함수를 알고 있으면 상황에 맞게 활용할 가능성은 높아지겠지요.

오늘은 짧게 여기까지…