엑셀 셀 범위에서 랜덤 값 추출하는 방법
엑셀에서 특정한 셀 범위 값을 무작위 랜덤으로 추출해야 하는 경우가 있다.
이런 경우 랜덤 함수를 활용하면 되는데 로또 번호 같은 숫자 값이라면 값 자체를 랜덤 함수로 값을 생성하면 되지만 이미 셀에 작성되어 있는 값을 랜덤으로 추출하는 것이라면 방법은 약간 달라진다.
엑셀 셀 범위에서 랜덤 값 추출하기
1. 기본적인 방법.
셀 범위에서 랜덤으로 값을 추출하는 기본적인 방법은 INDEX함수와 RANDBETWEEN 함수를 조합하는것이다.
INDEX 함수는 범위에서 지정한 숫자에 해당하는 셀의 값을 가져오는 함수로 숫자를 지정하는 부분을 RANDBETWEEN 함수로 대체하면 셀 값을 랜덤 하게 추출할 수 있다.
(ROWS 함수는 랜덤 값 생성 시 지정한 셀 범위의 수를 얻어오기 위해 사용한 것으로 그냥 숫자를 넣어도 된다)
=INDEX($A$1:$A$4,RANDBETWEEN(1,ROWS($A$1:$A$4))) |
2. 중복제거 하고 랜덤 값 추출하기.
단순히 하나의 랜덤 값을 추출한다면 위 수식만 사용해도 별다른 문제는 없을 것이다.
하지만 여러 값을 추출해야 한다면 중복값이 발생할 수 있는데 중복값을 제거하고 추출하고자 한다면 별도의 셀에 랜덤 값을 생성하고 중복 값을 제거하는 작업 후에 값을 추출해야 한다.
먼저 추출할 셀 범위의 수만큼 랜덤 값을 생성하자.
(생성 위치는 꼭 옆에 있을 필요는 없으며 단순히 RAND 함수로 생성해도 된다)
랜덤 값을 생성했다면 값을 추출할 셀 범위와 생성한 랜덤 값 범위를 기준으로 아래의 수식을 넣으면 된다.
수식을 작성할 때는 범위를 잘 확인해야 하는데 INDEX에는 추출 셀 범위, RANK 함수에는 생성한 랜덤 값 범위 그리고 COUNTIF 함수는 랜던 값 범위를 기준으로 조금 다르게 되어있다.
(COUNTIF 함수 범위에는 $를 넣는 것을 특히 주의하자)
=INDEX($A$1:$A$4,RANK(B1,$B$1:$B$4)+COUNTIF($B$1:B1,B1)-1) |
그 외 내용
- 중복을 제거 하고 랜덤 값을 추출하는 방법은 범위 안의 값을 무작위로 정렬하는 용도로도 활용이 가능하다.
- 이 모든 과정은 사실 매크로를 만들어 사용하는 게 더 간단할 수도 있다.
물론 매크로를 만드는 것 자체가 어려운 일이 될 수 있지만 어쨌든 자주 사용한다면 매크로를 만드는 것도 고려해 보자.
- 2번의 중복 제거 방법은 RANK 함수를 사용하여 값의 순위를 구할 때 중복을 제거하는 방법과 랜덤 함수로 값을 생성할 때 중복 값을 제거하는 방법을 사용한 것으로 아래의 글을 참고하면 조금 더 자세한 설명을 볼 수 있다.