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

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

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

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

엑셀 두 숫자사이 값 중복없이 랜덤 생성 목차 바로가기
함수 공식
  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 버전모든 엑셀 버전에서 사용 가능합니다.
사용된 기초 함수
선택된 범위에서 하나의 조건을 만족하는 셀의 개수를 계산합니다.
셀 또는 범위를 텍스트/문자열에서 직접 참조합니다.

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

공식 설명

두 숫자를 지정하여 두 수 사이에 있는 값을 중복없이 랜덤으로 생성하는 공식입니다. 기본적으로 두 '정수' 사이의 값을 랜덤으로 생성할 수 있으며, 공식의 첫번째 값인 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이 반환됩니다.
5 1 vote
게시글평점
현재 페이지 댓글알림 신청
알림 설정
guest
1 Comment
Inline Feedbacks
View all comments
칼마르텔
칼마르텔
2020년 6월 22일 8:12 오후
게시글평점 :
     

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

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