티스토리 뷰

어느덧 추석이 다가오고 주변에 추석 분위기가 보이기 시작한다. 웹에서도 TV 에서도 추석 선물이 자꾸 보인다. 아~~ 추석 선물, 선택하기 힘들 때 엑셀을 배우고 있다면 함수를 활용해서 랜덤하게 임의 선택으로 찍어보자? ^^

엑셀 함수를 너무 올리다보니 좀 지겹기도 하고 재미 삼아 이제까지 배운 엑셀 함수들을 활용하여 추석 선물 세트 뽑기를 해보자. 덤으로 배운 함수도 다시 한 번 확인한다.

랜덤 선택이 핵심이기에 주가 되는 엑셀 함수는 RAND 함수와 RANDBETWEEN 함수이다. 둘 모두 임의( 랜덤 ) 선택을 위해 엑셀 함수에 포함되어 있다. 둘의 차이라면 RAND 함수는 0 에서 1 사이의 실수 선택, RANDBETWEEN 함수는 정수를 난수로 생성한다.

엑셀 OFFSET 함수도 추가로 필요한다. 시작해 보자.

[컴활 1급] 기준점으로부터의 상대 위치, 엑셀 OFFSET 함수 :
http://secstart.tistory.com/632

엑셀 RANDBETWEEN 함수 간략 설명

설명 : RANDBETWEEN 함수는 전달되는 두 개의 인수를 하한값과 상한값으로 잡고 그 사이의 정수를 랜덤하게( 무작위로 ) 선택하는 함수이다. ( 정확히는 하한값 이상 상한값 이하 )
구문 : RANDBETWEEN ( 하한값, 상한값 )
인수 : 두 인수 모두 정수로 전달된다.

[컴활 1급] 정수형 난수 발생하는 RANDBETWEEN 함수 :
http://secstart.tistory.com/599

엑셀 RANDBETWEEN 함수로 추석 선물 고르기

[그림1] 엑셀 랜덤 함수로 추석 선물 무작위 선택[그림1] 엑셀 랜덤 함수로 추석 선물 무작위 선택


=OFFSET( A3, RANDBETWEEN( 1, 8 ), 0, 1, 2 )

1. 추석 선물을 생각나는대로 목록으로 작성해 보자.
2. 이제 엑셀 함수로 이 목록 중에서 뽑기를 해 본다.
3. 선택된 행의 NO. 와 선물명 이 표시될 E5:F5 를 선택하고 수식을 입력한다.
4. 수식을 입력하고 CTRL+ALT+ENTER 로 완료한다. 엑셀 배열 수식으로 작성되었기 때문이다.

0) OFFSET( 기준점, 랜덤 이동 행, 이동 열, 행 높이, 열 너비 )
1) 함수식은 기준점( A3 )에서 이동 행( RANDBETWEEN(1, 8) )과 이동 열( 0 )의 간격을 띄우고 행 높이( 1 )와 열 너비( 2 )로 셀 범위를 추출한다.
2) 이동 행 RANDBETWEEN( 1, 8 ) 의 수식은 하한값 1 과 상한값 8 사이의 정수형 난수를 발생한다.
3) 결국 위의 수식은 A3 을 기준점으로 랜덤하게 얻어진 행( 2 ) 만큼 아래로 이동하고 열( 0 ) 만큼 오른쪽 이동하여 1행 2열의 범위를 반환하는 것이다.

5. 이제 E5:F5 의 범위에 추석 선택목록이 랜덤하게 표시된다. F9( 재계산 단축키 )를 사용하면 표시되는 목록은 바뀐다.

[엑셀 활용] 엑셀 배열 수식 배우기 - 먼저 맛보기 :
http://secstart.tistory.com/602

엑셀 배열 함수식을 사용하기에 어렵게 느껴질 수도 있다. 그렇다면 다음 방법으로...

엑셀 RAND 함수 간략 설명

설명 : RAND 함수는 인수가 필요 없다. 기능은 0 과 1 사이의 실수를 무작위로 생성한다. ( 정확히는 0 이상 1 미만 )
구문 : RAND ()

[엑셀 모바일] RAND 함수로 임의의 난수 생성하기 :
http://secstart.tistory.com/721

엑셀 RAND 함수로 추석 선물 찍기

[그림2] 엑셀 랜덤 함수로 추석 선물 무작위로 고르기[그림2] 엑셀 랜덤 함수로 추석 선물 무작위로 고르기



먼저 작성된 추석 선물 목록의 행을 랜덤 선택한다. ( NO. 구하기 )
=INT( RAND() * 8 + 1 )

1. E10 셀에 위의 수식을 입력한다.
2. RAND() * 8 : RAND 함수는 0 이상 1 미만의 실수를 얻는다. 하지만 우리는 1 ~ 8 사이의 정수가 필요하다. 그래서 8 을 곱한다.
3. 위의 곱으로 0 이상 8 미만의 실수가 얻어진다. 아직 부족하다. 0 은 필요없고 8 이 필요하기에 1을 더한다.
4. 이제 1 이상 9 미만의 실수가 반환된다. 마지막으로 INT 함수로 자리 내림하여 실수를 정수로 변환한다.
4-ex. 8.999 가 RAND() * 8 + 1 로 얻어진다면 INT 함수로 자리 내림하여 정수화하면 8 이 반환된다.

이상이 RAND 함수로 필요 구간의 정수형 난수를 생성하는 원리이다. 보다 정확히는 INT( RAND() * ( 상한 - 하한 ) + 1 ) 이다.

[엑셀 모바일] INT 함수로 가까운 정수로 자리 내림하기 :
http://secstart.tistory.com/716

이렇게 NO. 를 무작위로 얻었으니 OFFSET 함수로 선택된 행의 선물명 을 얻어본다. ( 선물명 구하기 )
=OFFSET( A3, E10, 1 )

1. F10 셀에 위의 수식을 입력한다.
2. OFFSET 함수는 기준점에서 주어진 행과 열을 이동하여 원하는 크기의 범위를 얻는 함수이다.
3. A3 을 기준으로 E10 의 값인 7 만큼 아래로 행 이동하고 1 만큼 오른쪽으로 열 이동하여 셀 값을 얻는다.
4. B10 의 값이 선택되어 '의류' 가 반환된다.

위에서는 엑셀 배열 수식이 사용되지 않는다. 두 개의 엑셀 수식이 분리 사용되어 쉽게 느껴질 수도 있다.

이상은 재미로 만들어 본 예제들이지만 이런 형태의 랜덤 난수 추출 방법은 자주 활용될 수 있다. 엑셀 함수 학습과 활용에 도움되기 바란다.

잠깐! RANDBETWEEN 함수의 난수 생성 범위는 하한 이상 ~ 상한 이하의 정수이다. 하지만 RAND 함수는 0 이상 ~ 1 미만 실수를 난수 생성 범위로 한다.


마늘빵.


댓글