엑셀 두 숫자 사이 값 중복없이 랜덤 생성 공식
엑셀 두 숫자사이 값 중복없이 랜덤 생성 목차 바로가기
함수 공식
- 세로방향으로 생성 할 경우
{ =LARGE(ROW(INDIRECT($시작값&":"&$종료값))*NOT(COUNTIF($시작범위윗셀:시작범위윗셀, ROW(INDIRECT($시작값&":"&$종료값)))), RANDBETWEEN(1,$종료값-$시작값+2-ROWS($시작범위윗셀:시작범위윗셀))) }
- 가로방향으로 생성 할 경우
{ =LARGE(ROW(INDIRECT($시작값&":"&$종료값))*NOT(COUNTIF($시작범위좌측셀:시작범위좌측셀, ROW(INDIRECT($시작값&":"&$종료값)))), RANDBETWEEN(1,$종료값-$시작값+2-COLUMNS($시작범위좌측셀:시작범위좌측셀))) }
본 공식은 배열수식이므로 MS365 버전 사용자가 아닐 경우 Ctrl + Shift + Enter 로 수식을 입력합니다.
인수 설명

인수 | 설명 |
$시작값 | 중복 없이 랜덤으로 생성할 숫자의 시작 값(최소값) 입니다. 다른 셀을 참조할 경우 반드시 절대참조로 입력하는 것에 주의합니다. 셀 참조 대신 숫자를 바로 입력할 수도 있습니다. |
$종료값 | 중복 없이 랜덤으로 생성할 숫자의 마지막 값(최대값) 입니다. 다른 셀을 참조할 경우 반드시 절대참조로 입력하는 것에 주의합니다. 셀 참조 대신 숫자를 바로 입력할 수도 있습니다. |
$시작범위윗셀:시작범위윗셀 $시작범위좌측셀:시작범위좌측셀 |
숫자를 생성할 범위를 기준으로, 범위가 시작되는 셀의 위쪽 또는 왼쪽 셀 주소입니다. 범위형태로 입력하며 범위의 시작셀은 반드시 절대참조로 입력하는 것에 주의합니다.
예를들어, A2:A10 범위에 세로방향으로 숫자를 생성할 경우, [ $A1:A1 ] 으로 입력합니다. |
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [엑셀공식] 두 숫자 사이 값 중복없이 랜덤 생성예제파일
호환성
운영체제 호환성 Windows 버전 모든 엑셀 버전에서 사용 가능합니다. Mac 버전 모든 엑셀 버전에서 사용 가능합니다. 사용된 기초 함수
엑셀 두 수 사이 값 중복없이 랜덤 생성 공식 알아보기
공식 설명
두 숫자를 지정하여 두 수 사이에 있는 값을 중복없이 랜덤으로 생성하는 공식입니다. 기본적으로 두 '정수' 사이의 값을 랜덤으로 생성할 수 있으며, 공식의 첫번째 값인 ROW 함수를 조금만 변경하면 소숫점자리의 숫자도 생성가능합니다. 공식은 아래와 같습니다.
=LARGE((ROW(INDIRECT($시작값&":"&$종료값)))/10*NOT(COUNTIF($시작범위윗셀:시작범위윗셀, ROW(INDIRECT($시작값&":"&$종료값)))), RANDBETWEEN(1,$종료값-$시작값+2-ROWS($시작범위윗셀:시작범위윗셀)))
'$시작값과 $종료값이 각 1과 10일 경우, 0.1~1 사이의 값을 랜덤으로 생성합니다.해당수식은 배열수식이므로 MS 365 사용자가 아닐 경우, 반드시 Ctrl + Shift + Enter 로 수식을 입력해야 하는 것에 주의합니다.
공식의 동작원리
- ROW 함수의 인수로 범위를 입력하면, 범위의 행 번호(숫자)가 배열로 반환됩니다.
=ROW(INDIRECT($시작값&":"&$종료값))
=ROW(INDIRECT($1&":"&$10))
=ROW(INDIRECT($1:$10))
={1,2,3,4,5,6,7,8,9,10} - COUNTIF 함수와 확장범위($셀:셀)을 사용하여 범위에 중복되는 값이 있는지 여부를 확인합니다. 기준셀 이전에 중복되는 값이 있을 경우 COUNTIF 함수는 0보다 큰 수를 반환합니다.
=COUNTIF($시작범위윗셀:시작범위윗셀, ROW(INDIRECT($시작값&":"&$종료값)))
=COUNTIF($A1:A1,ROW($1:$10))
=COUNTIF($A1:A1,{1,2,3,4,5,6,7,8,9,10})
=COUNTIF({머릿글},{1,2,3,4,5,6,7,8,9,10})
={0,0,0,0,0,0,0,0,0,0} 'A1셀에는 중복되는 값이 없으므로 모두 0을 반환합니다.'셀이 아래로 한칸 자동채우기 되었고, 윗셀에 값으로 4가 반환되었다고 가정하면 공식은 아래와 같이 동작합니다.
=COUNTIF($A1:A2,{1,2,3,4,5,6,7,8,9,10})
=COUNTIF({머릿글,4},{1,2,3,4,5,6,7,8,9,10})
={0,0,0,1,0,0,0,0,0,0} ' 범위에 4가 있으므로 네번째 값이 1로 반환됩니다. - NOT 함수를 사용하여 1은 FALSE로, 0은 TRUE로 변환합니다.
=NOT(COUNTIF($시작범위윗셀:시작범위윗셀, ROW(INDIRECT($시작값&":"&$종료값)))
=NOT({0,0,0,1,0,0,0,0,0,0})
={TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE} - 1번에서 구한 숫자범위와 NOT 함수로 계산된 논리값을 곱하면 중복값을 제외한 값만 반환됩니다.
={1,2,3,4,5,6,7,8,9,10}*{TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE}
={1,2,3,0,5,6,7,8,9,10} - RANDBETWEEN 함수로 두 정수 사이의 값을 랜덤으로 생성합니다.
=RANDBETWEEN(1,$종료값-$시작값+2-ROWS($시작범위윗셀:시작범위윗셀))
=RANDBETWEEN(1,10-1+2-ROWS($A1:A1))
=RANDBETWEEN(1,10-1+2-1)
=RANDBETWEEN(1,10) ' 1과 10 사이의 정수를 랜덤으로 생성합니다.' 셀이 아래로 한칸 자동채우기 될 경우, 공식은 아래와 같이 동작합니다.
=RANDBETWEEN(1,10-1+2-ROWS($A1:A2))
=RANDBETWEEN(1,10-1+2-2)
=RANDBETWEEN(1,9) ' 1과 9사이의 정수를 랜덤으로 생성합니다. - 최종적으로 LARGE 함수를 사용하여 두 사이의 값을 중복없이 랜덤으로 생성합니다.
'두번째 값을 생성하는 것을 예제로 알아봅니다.
=LARGE(ROW(INDIRECT($시작값&":"&$종료값))*NOT(COUNTIF($시작범위윗셀:시작범위윗셀, ROW(INDIRECT($시작값&":"&$종료값)))), RANDBETWEEN(1,$종료값-$시작값+2-ROWS($시작범위윗셀:시작범위윗셀)))
=LARGE({1,2,3,0,5,6,7,8,9,10},RANDBETWEEN(1,9)) ' 범위 내 n번째로 큰 수를 랜덤으로 추출합니다.
=LARGE({1,2,3,0,5,6,7,8,9,10},{4}) ' RANDBETWEEN 함수로 4가 반환되었고, 범위내에서 4번째로 큰 수를 추출합니다.
=7 ' 7이 반환됩니다.
- ROW 함수의 인수로 범위를 입력하면, 범위의 행 번호(숫자)가 배열로 반환됩니다.