-
엑셀로 로또 번호 생성기를 만들어 보자Excel/Excel 지식인 2022. 10. 30. 18:36728x90
전체 목차
001. lookup 함수를 이용한 양도세 구간 구하기
002. 공백 셀 제거 후 정렬
003.데이터 분석 후 행 추가하기 (나누기, 나머지, 정수)
004. 목록상자, 토글버튼 연동
005. 다른 시트에 있는 특정 데이터를 복사해오기
006. 근무시간에서 특정시간 구하기 (야간 근무 인정 시간)
007. 상반기/하반기 매출 집계(SUMIF)
008. 콤보박스 활용하여 필터 변경하기009. 특정 위치에 있는 데이터만 추출하기 (address, indirect)
010. 엑셀에서 숫자를 특정 패턴으로 입력하기, 숫자 건너뛰어 입력하기
포스트 목차.
01. 문제엑셀로 로또 번호 생성기를 만들어 달라고 하는 요청이 들어왔다.
친구: 엑셀로 로또 번호 생성기 좀 만들어주라. 엄청 많은 로또 숫자 조합이 필요하다. 나: 순수 엑셀로만 만들어야됨? VBA 사용하면 안되고? 친구: 그냥 엑셀로 단순하게 쓰고 싶다. 나: 알았어, RAND 함수 이용해서 만들면 될 듯한데, 만들어볼게 친구: RANDBETWEEN으로 해봤는데, 숫자가 중복되게 나와서 대용량으로 만들기가 힘들다. 나: 알았다. 대화를 요약하면, 1에서 45까지의 숫자 중에서 겹치지 않게 6숫자를 랜덤하게 대용량으로 뽑아 달라는 이야기다.친구의 말대로 RANDBETWEEN을 사용하면 1에서 45사이의 랜덤숫자 6개를 얻는 것은 쉽게 할 수 있다. 그러나 추출한 6개의 숫자 중에 겹치는 값이 발생할 수 있기 때문에, 이 부분에 대한 처리를 해줘야 한다.02. 문제해결 방법생각해낸 방법은 다음과 같다.
- 45개의 난수를 생성한다.
- 이 중에서 가장 큰 6개의 난수를 선택한다.
- 6개의 난수에 대응하는 상대적인 위치값(인덱스)을 이용하여 6개의 숫자를 추출한다.
- 이를 여러 번 반복하여 여러 개의 로또 번호 세트를 생성한다.(1) 난수 발생 시키기
난수는 RAND 함수를 이용하여 발생 시킬 수 있다.
자세한 설명은 다음 포스트를 참고하자.
(2) 상위 k번째 값 추출하기
배열에서 k번째로 큰 값 또는 작은 값을 추출하기 위해서는 LARGE / SMALL 함수를 이용해야 한다.
자세한 설명은 다음 포스트를 참고하자.
(3) 특정 값이 위치하는 위치 알아내기
배열에서 특정 값의 상대적인 위치를 찾기 위해서는 MATCH 함수를 사용 할 수 있다.
(4) 특정 위치에 대응하는 값 가져오기
또한 배열에서 특정 위치에 대응하는 값을 가져오는 작업은 INDEX 함수를 활용하면 가능하다.
MATCH 함수와 INDEX 함수에 대한 자세한 설명은 다음 포스트를 참고하자.
(5) 복사 및 셀 선택 관련 단축키 와 팁 모음
(6) 배열 수식 사용하기
03. 예제 및 설명위에서 제시한 문제해결 방법을 이용하여 로또 번호를 생성해보자.
로또 번호를 1만 세트 만들어보자.
(1) 난수표 만들기
숫자 추출을 위한 근거자료로 사용될 난수표가 필요하다.
로또 번호 세트 당 45개의 난수가 필요하다.
총 45만개의 난수가 필요하다.
다음과 같이 시트 하나에 난수표를 작성해보자.
B2부터 AT2까지 첫 번째 난수 세트가 들어가면 될 것이다.
AT2에 아무 값이나 입력해두자.
또한 만개의 난수 세트가 필요하므로 B10001 셀로 이동하여 아무 값이나 넣어둔다.
셀B2에서 =RAND()를 입력하여 첫 난수를 얻는다.
B2를 선택 후 복사(Ctrl + C)를 한다. 이후에 Ctrl + Shift + 오른쪽 방향키를 눌러서 B2:AT2의 영역을 선택한 후에 Ctrl + V를 입력하여 =RAND() 함수를 복사한다.
이 상태에서 선택 영역을 복사한 후, Ctrl + Shift + 아래쪽 방향키를 눌러서, B2: AT10001의 영역을 선택한 후에 Ctrl + V를 입력하여 우리가 원하는 영역에 RAND()함수를 복사한다.
연번의 채우기 핸들을 더블클릭하여 난수표를 완성한다.
(2) 숫자 추출하기
다른 시트를 선택하여 숫자를 추출하는 로직을 만들어보자.
- LARGE 함수로 난수 중에서 큰 수 6개 추추하기
=LARGE(난수표!$B2:$AT2,로또번호!K$1)
- MATCH 함수로 LARGE 함수로 추출한 난수의 인덱스 구하기
=MATCH(LARGE(난수표!$B2:$AT2,로또번호!K$1),난수표!$B2:$AT2,0)
사실 여기까지 했으면 다한 거지만, 나오는 숫자를 정렬해보자.
- INDEX 함수로 크기가 6개짜리 배열 만들기 (배열 수식 사용)
=INDEX(MATCH(LARGE(난수표!$B2:$AT2,K$1:P$1),난수표!$B2:$AT2,0),)
인덱스 함수의 마지막 인자를 넣지 않으면 배열이 만들어진다. 위의 식에서 CTRL+SHIFT+ENTER를 입력하여 배열 수식을 적용하자. 배열 수식을 입력하기 위해서는 6개의 셀을 모두 선택한 상태에서 입력해야 한다.
- SMALL 함수로 정렬하기
위에서 얻은 크기 6짜리 배열을 SMALL 함수로 정렬해보자. (위의 예에서 열의 위치가 변경되었다. K->B)
=SMALL(INDEX(MATCH(LARGE(난수표!$B2:$AT2,B$1:G$1),난수표!$B2:$AT2,0),),B$1:G$1)
배열 연산으로 입력하면 정렬된 6개의 숫자를 구할 수 있다.
이 수식을 밑에 있는 만개의 데이터에 복사하면 만 개의 로또 번호를 얻을 수 있다.
728x90'Excel > Excel 지식인' 카테고리의 다른 글
여러 기념일 중 다가올 빠른 기념일 계산하기 (0) 2022.11.27 엑셀에서 특정 조건을 만족하는 문자열만 합치기 (2) 2022.11.15 Excel 지식인 011. 엑셀을 이용하여 도수분포표 작성하기 (0) 2022.10.03 Excel 지식인 010. 엑셀에서 숫자를 특정 패턴으로 입력하기, 숫자 건너뛰어 입력하기 (0) 2022.09.28 Excel [지식인 해결 시리즈] 009. 특정 위치에 있는 데이터만 추출하기 (address, indirect) (2) 2022.09.17