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

두 정수 사이 중복 없는 랜덤 생성 공식

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

지정한 범위에서 정수를 중복 없이 섞는 랜덤 공식입니다.

두 정수 사이 중복 없는 랜덤 생성 공식 예제 미리보기
예제 미리보기 크게 보기

인수 설명

01레거시 배열 공식

{=LARGE ( ROW ( INDIRECT ( "1:"&(종료값-시작값+1) ) )*NOT ( COUNTIF ( 누적결과범위, ROW ( INDIRECT ( "1:"&(종료값-시작값+1) ) )+시작값-1 ) ), RANDBETWEEN ( 1, 종료값-시작값+2-ROWS ( 누적결과범위 ) ) )+시작값-1}
{=LARGE ( ROW ( INDIRECT ( "1:"&(종료값-시작값+1) ) )*NOT ( COUNTIF ( 누적결과범위, ROW ( INDIRECT ( "1:"&(종료값-시작값+1) ) )+시작값-1 ) ), RANDBETWEEN ( 1, 종료값-시작값+2-COLUMNS ( 누적결과범위 ) ) )+시작값-1}
인수 설명 자세히 보기(인수를 클릭하면 해당 영역만 강조됩니다. 여러 개를 함께 켜고 끌 수 있습니다.)
인수구분설명
시작값필수생성할 범위의 가장 작은 정수입니다. 음수와 0도 사용할 수 있으며 종료값보다 클 수 없습니다.
종료값필수생성할 범위의 가장 큰 정수입니다. 출력 셀 수가 종료값-시작값+1을 넘으면 남은 후보가 없어 오류를 반환합니다.
누적결과범위필수머리글부터 현재 셀 바로 앞까지 포함하는 확장 범위입니다. 세로 입력은 첫 셀을 절대참조로 고정하고, 가로 입력은 첫 열을 고정합니다. 예) $E$1:E1, $F$2:F2
E7{=LARGE(ROW(INDIRECT("1:"&($C$2-$B$2+1)))*NOT(COUNTIF($E$1:E6,ROW(INDIRECT("1:"&($C$2-$B$2+1)))+$B$2-1)),RANDBETWEEN(1,$C$2-$B$2+2-ROWS($E$1:E6)))+$B$2-1}
A
B
C
D
E
F
1
순번
시작값
종료값
랜덤 결과
2
1
-2
3
-1
3
2
2
4
3
0
5
4
3
6
5
1
7
6
-2
8
검산
6개
중복 없음
9
E2:E6은 앞선 추출 결과를 고정한 재현용 값이며 E7만 배열수식으로 계산합니다. -2부터 3까지 여섯 정수가 한 번씩만 나오고 마지막 남은 값 -2를 E7 셀이 반환합니다. Excel 2019 이하에서는 Ctrl+Shift+Enter로 입력하고, Excel 2021 이상에서는 일반 입력할 수 있습니다.

02동적 배열 공식 (Excel 2021 이상)

=SORTBY ( SEQUENCE ( 종료값-시작값+1, , 시작값 ), RANDARRAY ( 종료값-시작값+1 ) )
인수 설명 자세히 보기
인수구분설명
시작값필수생성할 범위의 가장 작은 정수입니다. 음수와 0도 사용할 수 있습니다.
종료값필수생성할 범위의 가장 큰 정수입니다. 시작값보다 크거나 같은 값을 입력합니다.
G2=SORTBY(SEQUENCE($D$2-$C$2+1,,$C$2),IF($E$2="고정",$B$2:$B$7,RANDARRAY($D$2-$C$2+1)))
A
B
C
D
E
F
G
H
1
후보
고정 난수 키
시작값
종료값
검산모드
랜덤 결과
2
-2
0.42
-2
3
고정
0
3
-1
0.81
4
0
0.16
5
1
0.67
6
2
0.55
7
3
0.29
8
검산
키 6개
후보 6개
합계 3
9
검산모드가 고정일 때 B2:B7의 난수 키로 G2:G7에 0, 3, -2, 2, 1, -1이 스필됩니다. E2를 생성으로 바꾸면 RANDARRAY 함수가 새 난수 키를 만들어 -2부터 3까지의 정수를 다시 섞습니다.
이 공식이 사용하는 함수
LARGE 함수 ROW 함수 INDIRECT 함수 NOT 함수 COUNTIF 함수 RANDBETWEEN 함수 ROWS 함수 COLUMNS 함수 SORTBY 함수 SEQUENCE 함수 IF 함수 RANDARRAY 함수

동작 원리

01레거시 배열 공식

ROW 함수와 INDIRECT 함수가 양의 순번 배열을 만들고, COUNTIF 함수와 NOT 함수가 이미 사용한 순번을 제외한 뒤 RANDBETWEEN 함수와 LARGE 함수가 남은 순번을 무작위로 고릅니다.

레거시 배열 공식 예제 시트에서 E7 셀이 -2를 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

ROW 함수가 정수 후보를 만듭니다

INDIRECT 함수로 1행부터 6행까지의 참조를 만들면 ROW 함수가 1~6의 양의 순번을 반환합니다. 여기에 시작값 -2를 반영해 실제 후보 -2~3으로 바꿉니다.

=ROW ( INDIRECT ( "1:"&($C$2-$B$2+1) ) )+$B$2-1 시작값 -2와 종료값 3으로 여섯 후보를 만듭니다.
= {-2;-1;0;1;2;3} 선택할 수 있는 실제 정수 후보입니다.
2

COUNTIF 함수와 NOT 함수가 남은 후보를 표시합니다

E1:E6에는 머리글과 -1, 2, 0, 3, 1이 있습니다. COUNTIF 함수는 후보별 사용 횟수 {0;1;1;1;1;1}을 반환하고, NOT 함수는 아직 나오지 않은 -2의 위치만 TRUE로 바꿉니다.

=NOT ( COUNTIF ( $E$1:E6, {-2;-1;0;1;2;3} ) ) 이미 나온 다섯 값은 FALSE가 됩니다.
= {TRUE;FALSE;FALSE;FALSE;FALSE;FALSE} 첫 번째 후보 -2만 남아 있습니다.
3

양의 순번에서 사용한 위치를 0으로 바꿉니다

실제 후보를 직접 0으로 바꾸면 음수와 0을 정확히 구분할 수 없습니다. 대신 1~6의 양의 순번을 논리 배열과 곱해 남은 첫 번째 순번 1만 유지합니다.

= {1;2;3;4;5;6}*{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE} 사용한 후보의 순번은 0으로 바뀝니다.
= {1;0;0;0;0;0} 남은 후보에 대응하는 양의 순번입니다.
4

LARGE 함수가 순번을 실제 정수로 되돌립니다

남은 후보가 하나이므로 RANDBETWEEN 함수는 1을 반환하고 LARGE 함수도 순번 1을 선택합니다. 여기에 시작값-1을 더하면 실제 후보 -2가 됩니다.

=LARGE ( {1;0;0;0;0;0}, RANDBETWEEN ( 1, 1 ) )+(-2)-1 RANDBETWEEN(1,1)은 항상 1입니다.
= -2 E7 셀에 반환되는 마지막 정수입니다.

02동적 배열 공식 (Excel 2021 이상)

SEQUENCE 함수가 정수 후보를 만들고 SORTBY 함수가 RANDARRAY 함수의 난수 키로 순서를 바꿉니다. 예제 시트의 고정 모드에서는 재현 가능한 키 배열을 대신 사용합니다.

동적 배열 공식 예제 시트에서 G2:G7에 0, 3, -2, 2, 1, -1이 스필되는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

SEQUENCE 함수가 연속된 정수를 만듭니다

종료값 3에서 시작값 -2를 빼고 1을 더하면 후보 개수는 6입니다. SEQUENCE 함수는 시작값 -2부터 여섯 정수를 세로 배열로 반환합니다.

=SEQUENCE ( D2-C2+1, , C2 ) C2의 -2부터 D2의 3까지 생성합니다.
= {-2;-1;0;1;2;3} 중복 없이 한 번씩 섞을 정수 후보입니다.
2

IF 함수가 검산용 난수 키를 선택합니다

E2가 고정이면 재현 가능한 B2:B7의 키를 사용하고, 생성이면 RANDARRAY 함수가 0 이상 1 미만의 난수 키 여섯 개를 새로 만듭니다.

=IF ( E2="고정", B2:B7, RANDARRAY ( D2-C2+1 ) ) 현재는 고정 모드이므로 B2:B7을 반환합니다.
= {0.42;0.81;0.16;0.67;0.55;0.29} 검산에 사용하는 고정 난수 키 배열입니다.
3

SORTBY 함수가 난수 키 순서로 후보를 섞습니다

SORTBY 함수는 각 후보와 짝을 이룬 키를 오름차순으로 정렬합니다. 고정 키가 작은 순서대로 후보를 배열하면 0, 3, -2, 2, 1, -1이 됩니다.

=SORTBY ( {-2;-1;0;1;2;3}, {0.42;0.81;0.16;0.67;0.55;0.29} ) B2:B7의 고정 난수 키로 정렬 순서를 추적합니다.
= {0;3;-2;2;1;-1} G2:G7에 스필되는 중복 없는 정수 순열입니다.

댓글 13

댓글 13
5 (8개 평가)
칼마르텔
칼마르텔 2020.06.22 20:12
로또번호 추출 공식 감사합니다ㅋㅋㅋㅋ
일등되게 해주세요~.~헤헤
김지영
김지영 2021.01.26 21:50
좋은 정보 감사합니다!
숫자 0이 나오는 경우는 어떻게 하나요?? 분명 시작값을 1로 했는데 숫자 0이 나옵니다. 칸의 갯수도 범위 값보다 작은데 어떻게 해야하나요?
오빠두엑셀
오빠두엑셀 작성자 2021.01.30 11:00
안녕하세요. 공식을 어떻게 사용하셨나요?
적어주신 댓글만으로는 정확한 답변을 드리기가 어렵습니다.
작성하신 예제 파일과 함께 Q&A 커뮤니티로 올려주시겠어요? :)
감사합니다.
감사합니다
감사합니다 2021.10.21 13:28
감사합니다. 랜덤 추첨해야 하는데 예제파일 좀 이용하겠습니다.
예제파일 이외에 따로 식 세워서 만들어보니까 자꾸 오류나서 시간 나면 무엇 때문인지 확인해봐야겠습니다.
감사합니다.
감사합니다. 2021.11.05 13:58
오류 떴었던 이유 뒤늦게 말씀드리러 왔습니다.
본 공식은 배열수식이므로 MS365 버전 사용자가 아닐 경우 Ctrl + Shift + Enter 로 수식을 입력합니다.
이걸 지키지 않아서 오류 떴었습니다. 그냥 엔터로 입력하니까 배열수식 적용이 안되는 거였습니다.
오늘 사용하다가 오류 뜨길래 뭔가 싶었더만 이거 때문이었네요.
감사합니다.
구르마
구르마 2022.02.02 11:14
가로방향으로 생성할경우 0이 나오는 경우가 있는데 무엇이 문제인가요?
오빠두엑셀
오빠두엑셀 작성자 2022.02.06 18:27
구르마님 안녕하세요.
공식이 잘못 작성되어 있었습니다. 죄송합니다.
수식을 아래로 다시 작성 후 사용해보시겠어요?
{ =LARGE(ROW(INDIRECT($시작값&":"&$종료값))*NOT(COUNTIF($시작범위좌측셀:시작범위좌측셀, ROW(INDIRECT($시작값&":"&$종료값)))), RANDBETWEEN(1,$종료값-$시작값+2-COLUMNS($시작범위좌측셀:시작범위좌측셀))) }
문제가 바로 해결되실겁니다..^^
김동건
김동건 2022.02.08 15:45
선생님 너무 감사합니다.
질문이 하나 있습니다. 이게 계속 클릭할때마다 랜덤으로 숫자가 바뀌는데
제가 바꾸고 싶을때만 바꾸는 방법이 있을까요?
오빠두엑셀
오빠두엑셀 작성자 2022.02.08 16:09
안녕하세요.
[파일] - [옵션] - [수식] 에서 계산 방식을 '수동'으로 바꾸신 다음,
바꾸고 싶을 때만 f9 키를 눌러보세요 :)
5프로만
5프로만 2022.08.20 01:38
좋은 강의 감사합니다.
그런데 시작값과 종료값이 매우 큰 값(수천만~수억)인 경우에는 에러가 나는데 왜그런지 설명 부탁 드립니다.
오빠두엑셀
오빠두엑셀 작성자 2022.08.20 02:47
안녕하세요.
수식이 엑셀의 행번호(최대 1,048,576)개 까지만 사용할 수 있어서 그렇습니다.^^
100만개 보다 큰 값의 무작위수는 RANDBETWEEN 함수를 사용해서 처리해보세요.
스야
스야 2024.07.17 15:54
안녕하세요, 해당 공식 활용하려는데 세로 방향 생성 공식을 써도 가로방향으로만 난수가 생성되고, 세로로 드래그 하면 원래 값이랑 똑같은 값이 들어가서 어떻게 해야 할 지 모르겠습니다 ㅠㅠ 엑셀 2010 버전이고 5700개 가량 생성하려 합니다.
+) 지금 보니 그냥 데이터가 많아서 느리게 계산되는 것 같습니다... 좋은 자료 만들어주셔서 감사합니다.
강민준🤗
강민준🤗 2024.08.11 16:58
좋은 강의 감사합니다🙇‍♂️
스크랩 완료