5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
실무 위키응용 공식엑셀 랜덤 쿠폰 코드 생성 공식

엑셀 랜덤 쿠폰 코드 생성 공식

지원 버전 자세히 보기
엑셀 2013 이전엑셀 2016엑셀 2019엑셀 2021엑셀 2024M365웹 엑셀

숫자와 영문을 조합해 무작위 코드를 만드는 공식입니다.

엑셀 랜덤 쿠폰 코드 생성 공식 예제 미리보기
예제 미리보기 크게 보기

인수 설명

01모든 버전 혼합 코드

=MID ( 숫자문자&영문문자, RANDBETWEEN ( 1, 36 ), 1 ) & MID ( 숫자문자&영문문자, RANDBETWEEN ( 1, 36 ), 1 ) & MID ( 숫자문자&영문문자, RANDBETWEEN ( 1, 36 ), 1 ) & MID ( 숫자문자&영문문자, RANDBETWEEN ( 1, 36 ), 1 )
인수 설명 자세히 보기(인수를 클릭하면 해당 영역만 강조됩니다. 여러 개를 함께 켜고 끌 수 있습니다.)
인수구분설명
숫자문자필수혼합 코드에 사용할 숫자 1~9와 0을 차례대로 입력한 문자 목록입니다.
영문문자필수혼합 코드에 사용할 영문 A~Z를 차례대로 입력한 문자 목록입니다.
E2=MID(B4&B5,IF(B2="고정",7,RANDBETWEEN(1,36)),1)&MID(B4&B5,IF(B2="고정",21,RANDBETWEEN(1,36)),1)&MID(B4&B5,IF(B2="고정",3,RANDBETWEEN(1,36)),1)&MID(B4&B5,IF(B2="고정",23,RANDBETWEEN(1,36)),1)
A
B
C
D
E
F
G
H
I
1
설정
값 1
값 2·설명
혼합 코드
숫자 코드
영문 코드
최신 혼합 코드
2
검산모드
고정
생성으로 바꾸면 난수 계산
7K3M
4827
QHRT
7K3M
3
코드길이
4
최신식 결과 길이
4
숫자문자
1234567890
10개
5
영문문자
ABCDEFGHIJKLMNOPQRSTUVWXYZ
26개
6
숫자범위
0
9
7
문자코드
65
90
8
발급 후
값 붙여넣기
재계산 방지·중복 확인
9
검산모드가 고정일 때 문자 위치 7·21·3·23을 사용해 E2 셀은 7K3M을 반환합니다. B2를 생성으로 바꾸면 계산할 때마다 새 혼합 코드가 만들어집니다.

02숫자·영문 전용 코드

=RANDBETWEEN ( 숫자최솟값, 숫자최댓값 ) & RANDBETWEEN ( 숫자최솟값, 숫자최댓값 ) & RANDBETWEEN ( 숫자최솟값, 숫자최댓값 ) & RANDBETWEEN ( 숫자최솟값, 숫자최댓값 )
=CHAR ( RANDBETWEEN ( 문자코드최솟값, 문자코드최댓값 ) ) & CHAR ( RANDBETWEEN ( 문자코드최솟값, 문자코드최댓값 ) ) & CHAR ( RANDBETWEEN ( 문자코드최솟값, 문자코드최댓값 ) ) & CHAR ( RANDBETWEEN ( 문자코드최솟값, 문자코드최댓값 ) )
인수 설명 자세히 보기
인수구분설명
숫자최솟값필수숫자 전용 코드에서 사용할 가장 작은 숫자입니다.
숫자최댓값필수숫자 전용 코드에서 사용할 가장 큰 숫자입니다.
문자코드최솟값필수영문 A에 해당하는 문자 코드 65입니다.
문자코드최댓값필수영문 Z에 해당하는 문자 코드 90입니다.
F2=IF(B2="고정",4,RANDBETWEEN(B6,C6))&IF(B2="고정",8,RANDBETWEEN(B6,C6))&IF(B2="고정",2,RANDBETWEEN(B6,C6))&IF(B2="고정",7,RANDBETWEEN(B6,C6))
G2=CHAR(IF(B2="고정",81,RANDBETWEEN(B7,C7)))&CHAR(IF(B2="고정",72,RANDBETWEEN(B7,C7)))&CHAR(IF(B2="고정",82,RANDBETWEEN(B7,C7)))&CHAR(IF(B2="고정",84,RANDBETWEEN(B7,C7)))
A
B
C
D
E
F
G
H
I
1
설정
값 1
값 2·설명
혼합 코드
숫자 코드
영문 코드
최신 혼합 코드
2
검산모드
고정
생성으로 바꾸면 난수 계산
7K3M
4827
QHRT
7K3M
3
코드길이
4
최신식 결과 길이
4
숫자문자
1234567890
10개
5
영문문자
ABCDEFGHIJKLMNOPQRSTUVWXYZ
26개
6
숫자범위
0
9
7
문자코드
65
90
8
발급 후
값 붙여넣기
재계산 방지·중복 확인
9
고정 모드에서 F2 셀은 4827, G2 셀은 QHRT를 반환합니다. B2를 생성으로 바꾸면 숫자 전용 코드와 영문 전용 코드가 각각 다시 계산됩니다.

032021 이후 길이 지정 코드

=LET ( 문자목록, 숫자문자&영문문자, 문자위치, RANDARRAY ( 코드길이, 1, 1, 36, TRUE ), TEXTJOIN ( "", TRUE, MID ( 문자목록, 문자위치, 1 ) ) )
인수 설명 자세히 보기
인수구분설명
코드길이필수생성할 쿠폰 코드의 문자 수입니다. 고정 모드는 네 자리 검산값을 사용합니다.
숫자문자필수혼합 코드에 사용할 숫자 1~9와 0을 차례대로 입력한 문자 목록입니다.
영문문자필수혼합 코드에 사용할 영문 A~Z를 차례대로 입력한 문자 목록입니다.
H2=LET(chars,B4&B5,positions,IF(B2="고정",{7;21;3;23},RANDARRAY(B3,1,1,36,TRUE)),TEXTJOIN("",TRUE,MID(chars,positions,1)))
A
B
C
D
E
F
G
H
I
1
설정
값 1
값 2·설명
혼합 코드
숫자 코드
영문 코드
최신 혼합 코드
2
검산모드
고정
생성으로 바꾸면 난수 계산
7K3M
4827
QHRT
7K3M
3
코드길이
4
최신식 결과 길이
4
숫자문자
1234567890
10개
5
영문문자
ABCDEFGHIJKLMNOPQRSTUVWXYZ
26개
6
숫자범위
0
9
7
문자코드
65
90
8
발급 후
값 붙여넣기
재계산 방지·중복 확인
9
고정 모드의 위치 배열 {7;21;3;23}으로 H2 셀은 7K3M을 반환합니다. B2를 생성으로 바꾸면 B3에 입력한 길이만큼 새 혼합 코드가 만들어집니다.
이 공식이 사용하는 함수
MID 함수 RANDBETWEEN 함수 IF 함수 CHAR 함수 LET 함수 RANDARRAY 함수 TEXTJOIN 함수

동작 원리

01모든 버전 혼합 코드

RANDBETWEEN 함수는 문자 목록의 위치를 고르고 MID 함수가 네 문자를 꺼낸 뒤 & 연산자가 하나의 코드로 연결합니다.

모든 버전 혼합 코드의 예제 시트에서 E2 셀이 7K3M을 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

각 자리에 사용할 문자 위치를 고릅니다

고정 모드에서는 검산용 문자 위치 7·21·3·23을 사용합니다. 생성 모드에서는 각 자리에 RANDBETWEEN 함수가 1부터 36까지의 정수를 새로 반환합니다.

=IF ( 검산모드="고정", 고정위치, RANDBETWEEN ( 1, 36 ) ) 네 자리에 같은 계산을 반복합니다.
= {7;21;3;23} 고정 모드에서 네 자리에 사용할 위치입니다.
2

MID 함수가 위치별 문자를 꺼냅니다

숫자문자와 영문문자를 연결한 36개 문자 목록에서 7번째는 7, 21번째는 K, 3번째는 3, 23번째는 M입니다.

=MID ( 숫자문자&영문문자, {7;21;3;23}, 1 )
= {"7";"K";"3";"M"} 각 위치에서 꺼낸 네 문자입니다.
3

네 문자를 하나의 코드로 연결합니다

각 MID 함수가 반환한 문자를 & 연산자로 이어 붙여 네 자리 혼합 코드를 만듭니다. 난수 함수는 시트를 다시 계산할 때 값이 바뀌므로 발급 후 결과를 값으로 붙여넣어 고정하고 중복 여부를 확인합니다. 보안 토큰 생성에는 사용하지 않습니다.

="7"&"K"&"3"&"M"
= "7K3M" E2 셀의 혼합 코드입니다.

02숫자·영문 전용 코드

RANDBETWEEN 함수는 숫자 또는 문자 코드를 고르고 CHAR 함수는 문자 코드를 영문으로 바꿉니다.

숫자·영문 전용 코드의 예제 시트에서 F2와 G2 셀이 각각 4827과 QHRT를 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

숫자 네 자리를 선택해 연결합니다

고정 모드에서는 검산값 4·8·2·7을 사용합니다. 생성 모드에서는 각 자리에 RANDBETWEEN 함수가 B6의 0부터 C6의 9까지 정수를 새로 반환합니다.

=IF ( B2="고정", 4, RANDBETWEEN ( B6, C6 ) ) & IF ( B2="고정", 8, RANDBETWEEN ( B6, C6 ) ) & IF ( B2="고정", 2, RANDBETWEEN ( B6, C6 ) ) & IF ( B2="고정", 7, RANDBETWEEN ( B6, C6 ) )
= "4827" F2 셀의 숫자 전용 코드입니다.
2

영문 네 자리에 사용할 문자 코드를 고릅니다

고정 모드에서는 검산용 문자 코드 81·72·82·84를 사용합니다. 생성 모드에서는 각 자리에 RANDBETWEEN 함수가 B7의 65부터 C7의 90까지 정수를 새로 반환합니다.

=IF ( 검산모드="고정", 고정문자코드, RANDBETWEEN ( 문자코드최솟값, 문자코드최댓값 ) ) 네 자리에 같은 계산을 반복합니다.
= {81;72;82;84} Q·H·R·T에 해당하는 문자 코드입니다.
3

CHAR 함수가 문자 코드를 영문으로 바꿉니다

CHAR 함수는 81을 Q, 72를 H, 82를 R, 84를 T로 변환합니다.

=CHAR ( {81;72;82;84} )
= {"Q";"H";"R";"T"} 각 문자 코드에서 변환한 네 영문입니다.
4

네 영문을 하나의 코드로 연결합니다

CHAR 함수가 반환한 네 영문을 & 연산자로 이어 붙여 영문 전용 코드를 만듭니다.

="Q"&"H"&"R"&"T"
= "QHRT" G2 셀의 영문 전용 코드입니다.

032021 이후 길이 지정 코드

RANDARRAY 함수는 필요한 개수의 문자 위치를 만들고 MID 함수와 TEXTJOIN 함수가 해당 문자를 하나의 코드로 연결합니다.

2021 이후 길이 지정 코드의 예제 시트에서 H2 셀이 7K3M을 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

RANDARRAY 함수가 문자 위치 배열을 만듭니다

고정 모드에서는 검산용 배열 {7;21;3;23}을 사용합니다. 생성 모드에서는 RANDARRAY 함수가 B3에 입력한 개수만큼 1부터 36까지의 정수를 세로 배열로 반환합니다.

=IF ( B2="고정", {7;21;3;23}, RANDARRAY ( B3, 1, 1, 36, TRUE ) )
= {7;21;3;23} 고정 모드에서 네 자리에 사용할 위치입니다.
2

MID 함수가 위치별 문자를 배열로 반환합니다

숫자문자와 영문문자를 연결한 목록에서 네 위치에 해당하는 문자를 하나씩 꺼냅니다.

=MID ( B4&B5, {7;21;3;23}, 1 )
= {"7";"K";"3";"M"} 각 위치에서 꺼낸 네 문자입니다.
3

TEXTJOIN 함수가 문자 배열을 연결합니다

TEXTJOIN 함수는 구분자 없이 네 문자를 순서대로 연결해 하나의 혼합 코드를 만듭니다.

=TEXTJOIN ( "", TRUE, {"7";"K";"3";"M"} )
= "7K3M" H2 셀의 최신 혼합 코드입니다.

댓글 10

댓글 10
5 (5개 평가)
Mario
Mario 2020.07.07 19:45
엑셀로 못하는 것은 무엇 ... 새로운 세계를 보는 것 같네요
이제 시작이라 재미 있네요
psnghn
psnghn 2020.07.08 14:22
Check Digit 을 포함한 카드 번호 생성도 가능할까요?
오빠두엑셀
오빠두엑셀 작성자 2020.07.08 16:54
check digit 은 무엇인가요? :)
카드 번호에는 숫자만 들어가므로, RANDBETWEEN(0,9) 를 통해서 16자리 카드번호를 생성하시면 될 것 같습니다.
psnghn
psnghn 2020.07.08 18:10
check digit 은 주민번호 끝자리처럼 발생시킨 숫자가 유효한지를 확인할 수 있는 값입니다.
오빠두엑셀
오빠두엑셀 작성자 2020.07.08 19:03
아 그렇군요 ! ^^
발생시킨 숫자가 유효한지 확인하는 규칙만 있다면 물론 가능하겠네요.
밍규니
밍규니 2021.10.18 17:11
수식을 아래로 쭈욱 긁으면 번호가 바뀌던데 혹시 안바뀌게 하는 방법도 있을까용!
오빠두엑셀
오빠두엑셀 작성자 2021.10.25 01:30
밍규니님 안녕하세요.
값을 안 바뀌게 하시려면, 쭈욱 긁어서 자동채우기 하신 뒤,
범위를 복사 -> 우클릭 -> 선택하여 붙여넣기 에서 값 형태로 붙여넣기 하시면 됩니다 =)
seonj****
seonj**** 2023.11.08 17:37
안녕하세요 밍규니님,
아주 유용하게 잘 쓰겠습니다.
그런데 범위를 복사하고 값형태로 붙여넣기 해도 값이 바뀝니다..
고정시킬 방법 없을까요?
jji
jji 2022.04.13 11:27
감사합니다 유용했습니다
강민준🤗
강민준🤗 2024.08.11 16:59
좋은 강의 감사합니다🙇‍♂️
스크랩 완료