엑셀 두 숫자사이 값 중복없이 랜덤 생성 :: 액셀함수공식

두 숫자를 지정하여 두 수 사이에 있는 값을 중복없이 랜덤으로 생성하는 공식의 사용법 및 동작원리를 알아봅니다.

홈페이지 » 두 숫자 사이 값 중복없이 랜덤 생성 :: 엑셀 공식

엑셀 두 숫자 사이 값 중복없이 랜덤 생성 공식

엑셀 두 숫자사이 값 중복없이 랜덤 생성 목차 바로가기
함수 공식
  1. 세로방향으로 생성 할 경우
    { =LARGE(ROW(INDIRECT($시작값&":"&$종료값))*NOT(COUNTIF($시작범위윗셀:시작범위윗셀, ROW(INDIRECT($시작값&":"&$종료값)))), RANDBETWEEN(1,$종료값-$시작값+2-ROWS($시작범위윗셀:시작범위윗셀))) }
  2. 가로방향으로 생성 할 경우
    { =LARGE(ROW(INDIRECT($시작값&":"&$종료값))*NOT(COUNTIF($시작범위좌측셀:시작범위좌측셀, ROW(INDIRECT($시작값&":"&$종료값)))), RANDBETWEEN(1,$종료값-$시작값+2-COLUMNS($시작범위윗셀:시작범위윗셀))) }

본 공식은 배열수식이므로 MS365 버전 사용자가 아닐 경우 Ctrl + Shift + Enter 로 수식을 입력합니다.

인수 설명
두 숫자 사이 값 중복없이 출력 인수 예제
두 숫자 사이값을 중복없이 불러오는 공식에 사용된 인수
인수 설명
$시작값 중복 없이 랜덤으로 생성할 숫자의 시작 값(최소값) 입니다. 다른 셀을 참조할 경우 반드시 절대참조로 입력하는 것에 주의합니다. 셀 참조 대신 숫자를 바로 입력할 수도 있습니다.
$종료값 중복 없이 랜덤으로 생성할 숫자의 마지막 값(최대값) 입니다. 다른 셀을 참조할 경우 반드시 절대참조로 입력하는 것에 주의합니다. 셀 참조 대신 숫자를 바로 입력할 수도 있습니다.
$시작범위윗셀:시작범위윗셀
$시작범위좌측셀:시작범위좌측셀
숫자를 생성할 범위를 기준으로, 범위가 시작되는 셀의 위쪽 또는 왼쪽 셀 주소입니다. 범위형태로 입력하며 범위의 시작셀은 반드시 절대참조로 입력하는 것에 주의합니다.

예를들어, A2:A10 범위에 세로방향으로 숫자를 생성할 경우, [ $A1:A1 ] 으로 입력합니다.

예제파일 다운로드

호환성
운영체제 호환성
Windows 버전 모든 엑셀 버전에서 사용 가능합니다.
Mac 버전 모든 엑셀 버전에서 사용 가능합니다.
사용된 기초 함수
선택된 범위에서 하나의 조건을 만족하는 셀의 개수를 계산합니다.
셀주소를 문자로 직접 입력하여 특정 셀이나 범위의 값을 반환합니다.
Loading...

엑셀 두 수 사이 값 중복없이 랜덤 생성 공식 알아보기

공식 설명

두 숫자를 지정하여 두 수 사이에 있는 값을 중복없이 랜덤으로 생성하는 공식입니다. 기본적으로 두 '정수' 사이의 값을 랜덤으로 생성할 수 있으며, 공식의 첫번째 값인 ROW 함수를 조금만 변경하면 소숫점자리의 숫자도 생성가능합니다. 공식은 아래와 같습니다.

=LARGE((ROW(INDIRECT($시작값&":"&$종료값)))/10*NOT(COUNTIF($시작범위윗셀:시작범위윗셀, ROW(INDIRECT($시작값&":"&$종료값)))), RANDBETWEEN(1,$종료값-$시작값+2-ROWS($시작범위윗셀:시작범위윗셀)))
'$시작값과 $종료값이 각 1과 10일 경우, 0.1~1 사이의 값을 랜덤으로 생성합니다.

해당수식은 배열수식이므로 MS 365 사용자가 아닐 경우, 반드시 Ctrl + Shift + Enter 로 수식을 입력해야 하는 것에 주의합니다.

공식의 동작원리
  1. ROW 함수의 인수로 범위를 입력하면, 범위의 행 번호(숫자)가 배열로 반환됩니다.
    =ROW(INDIRECT($시작값&":"&$종료값))
    =ROW(INDIRECT($1&":"&$10))
    =ROW(INDIRECT($1:$10))
    ={1,2,3,4,5,6,7,8,9,10}
  2. 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로 반환됩니다.
  3. 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}
  4. 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}
  5. 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사이의 정수를 랜덤으로 생성합니다.
  6. 최종적으로 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이 반환됩니다.
0 0 투표
게시글평점
guest
3 댓글
Inline Feedbacks
모든 댓글 보기
칼마르텔
칼마르텔
2020년 6월 22일 8:12 오후
게시글평점 :
     

로또번호 추출 공식 감사합니다ㅋㅋㅋㅋ
일등되게 해주세요~.~헤헤

김지영
김지영
2021년 1월 26일 9:50 오후
게시글평점 :
     

좋은 정보 감사합니다!
숫자 0이 나오는 경우는 어떻게 하나요?? 분명 시작값을 1로 했는데 숫자 0이 나옵니다. 칸의 갯수도 범위 값보다 작은데 어떻게 해야하나요?

3
0
여러분의 생각을 댓글로 남겨주세요.x