엑셀 랜덤 쿠폰 코드 생성 공식
지원 버전 자세히 보기
숫자와 영문을 조합해 무작위 코드를 만드는 공식입니다.
인수 설명
01모든 버전 혼합 코드
=MID ( 숫자문자&영문문자, RANDBETWEEN ( 1, 36 ), 1 ) & MID ( 숫자문자&영문문자, RANDBETWEEN ( 1, 36 ), 1 ) & MID ( 숫자문자&영문문자, RANDBETWEEN ( 1, 36 ), 1 ) & MID ( 숫자문자&영문문자, RANDBETWEEN ( 1, 36 ), 1 )인수 설명 자세히 보기(인수를 클릭하면 해당 영역만 강조됩니다. 여러 개를 함께 켜고 끌 수 있습니다.)
02숫자·영문 전용 코드
=RANDBETWEEN ( 숫자최솟값, 숫자최댓값 ) & RANDBETWEEN ( 숫자최솟값, 숫자최댓값 ) & RANDBETWEEN ( 숫자최솟값, 숫자최댓값 ) & RANDBETWEEN ( 숫자최솟값, 숫자최댓값 )
=CHAR ( RANDBETWEEN ( 문자코드최솟값, 문자코드최댓값 ) ) & CHAR ( RANDBETWEEN ( 문자코드최솟값, 문자코드최댓값 ) ) & CHAR ( RANDBETWEEN ( 문자코드최솟값, 문자코드최댓값 ) ) & CHAR ( RANDBETWEEN ( 문자코드최솟값, 문자코드최댓값 ) )
인수 설명 자세히 보기
032021 이후 길이 지정 코드
=LET ( 문자목록, 숫자문자&영문문자, 문자위치, RANDARRAY ( 코드길이, 1, 1, 36, TRUE ), TEXTJOIN ( "", TRUE, MID ( 문자목록, 문자위치, 1 ) ) )인수 설명 자세히 보기
동작 원리
01모든 버전 혼합 코드
RANDBETWEEN 함수는 문자 목록의 위치를 고르고 MID 함수가 네 문자를 꺼낸 뒤 & 연산자가 하나의 코드로 연결합니다.
모든 버전 혼합 코드의 예제 시트에서 E2 셀이 7K3M을 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.
각 자리에 사용할 문자 위치를 고릅니다
고정 모드에서는 검산용 문자 위치 7·21·3·23을 사용합니다. 생성 모드에서는 각 자리에 RANDBETWEEN 함수가 1부터 36까지의 정수를 새로 반환합니다.
=IF ( 검산모드="고정", 고정위치, RANDBETWEEN ( 1, 36 ) )
네 자리에 같은 계산을 반복합니다. = {7;21;3;23}
고정 모드에서 네 자리에 사용할 위치입니다. MID 함수가 위치별 문자를 꺼냅니다
숫자문자와 영문문자를 연결한 36개 문자 목록에서 7번째는 7, 21번째는 K, 3번째는 3, 23번째는 M입니다.
=MID ( 숫자문자&영문문자, {7;21;3;23}, 1 )
= {"7";"K";"3";"M"}
각 위치에서 꺼낸 네 문자입니다. 네 문자를 하나의 코드로 연결합니다
각 MID 함수가 반환한 문자를 & 연산자로 이어 붙여 네 자리 혼합 코드를 만듭니다. 난수 함수는 시트를 다시 계산할 때 값이 바뀌므로 발급 후 결과를 값으로 붙여넣어 고정하고 중복 여부를 확인합니다. 보안 토큰 생성에는 사용하지 않습니다.
="7"&"K"&"3"&"M"
= "7K3M"
E2 셀의 혼합 코드입니다. 02숫자·영문 전용 코드
RANDBETWEEN 함수는 숫자 또는 문자 코드를 고르고 CHAR 함수는 문자 코드를 영문으로 바꿉니다.
숫자·영문 전용 코드의 예제 시트에서 F2와 G2 셀이 각각 4827과 QHRT를 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.
숫자 네 자리를 선택해 연결합니다
고정 모드에서는 검산값 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 셀의 숫자 전용 코드입니다. 영문 네 자리에 사용할 문자 코드를 고릅니다
고정 모드에서는 검산용 문자 코드 81·72·82·84를 사용합니다. 생성 모드에서는 각 자리에 RANDBETWEEN 함수가 B7의 65부터 C7의 90까지 정수를 새로 반환합니다.
=IF ( 검산모드="고정", 고정문자코드, RANDBETWEEN ( 문자코드최솟값, 문자코드최댓값 ) )
네 자리에 같은 계산을 반복합니다. = {81;72;82;84}
Q·H·R·T에 해당하는 문자 코드입니다. CHAR 함수가 문자 코드를 영문으로 바꿉니다
CHAR 함수는 81을 Q, 72를 H, 82를 R, 84를 T로 변환합니다.
=CHAR ( {81;72;82;84} )
= {"Q";"H";"R";"T"}
각 문자 코드에서 변환한 네 영문입니다. 네 영문을 하나의 코드로 연결합니다
CHAR 함수가 반환한 네 영문을 & 연산자로 이어 붙여 영문 전용 코드를 만듭니다.
="Q"&"H"&"R"&"T"
= "QHRT"
G2 셀의 영문 전용 코드입니다. 032021 이후 길이 지정 코드
RANDARRAY 함수는 필요한 개수의 문자 위치를 만들고 MID 함수와 TEXTJOIN 함수가 해당 문자를 하나의 코드로 연결합니다.
2021 이후 길이 지정 코드의 예제 시트에서 H2 셀이 7K3M을 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.
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}
고정 모드에서 네 자리에 사용할 위치입니다. MID 함수가 위치별 문자를 배열로 반환합니다
숫자문자와 영문문자를 연결한 목록에서 네 위치에 해당하는 문자를 하나씩 꺼냅니다.
=MID ( B4&B5, {7;21;3;23}, 1 )
= {"7";"K";"3";"M"}
각 위치에서 꺼낸 네 문자입니다. TEXTJOIN 함수가 문자 배열을 연결합니다
TEXTJOIN 함수는 구분자 없이 네 문자를 순서대로 연결해 하나의 혼합 코드를 만듭니다.
=TEXTJOIN ( "", TRUE, {"7";"K";"3";"M"} )
= "7K3M"
H2 셀의 최신 혼합 코드입니다.
이제 시작이라 재미 있네요
카드 번호에는 숫자만 들어가므로, RANDBETWEEN(0,9) 를 통해서 16자리 카드번호를 생성하시면 될 것 같습니다.
발생시킨 숫자가 유효한지 확인하는 규칙만 있다면 물론 가능하겠네요.
값을 안 바뀌게 하시려면, 쭈욱 긁어서 자동채우기 하신 뒤,
범위를 복사 -> 우클릭 -> 선택하여 붙여넣기 에서 값 형태로 붙여넣기 하시면 됩니다 =)
아주 유용하게 잘 쓰겠습니다.
그런데 범위를 복사하고 값형태로 붙여넣기 해도 값이 바뀝니다..
고정시킬 방법 없을까요?