티스토리 뷰


안녕하세요. 진지한 엑셀 매크로 프로그래밍 강좌를 진행하고 있는 구스입니다. 

이번 글에서는 간단한 로또 프로그램을 VBA를 통해서 만들어 볼까 합니다. 


엑셀 매크로 프로그래밍 강좌


로또 프로그램을 만드는데 가장 중요한 포인트는 랜덤수를 생성하는 것입니다. 한국 로또는 1부터 45까지의 값을 가지는 6개의 묶음을 통해서 로또의 숫자가 정해지게 되죠.


따라서 1-45까지의 랜덤수를 만드는 것이 로또 프로그램을 만드는데 가장 중요한 포인트라할 수 있겠습니다. 

엑셀 매크로 프로그래밍에서 랜덤수를 만드는 함수는 RND 함수입니다.


Rnd 함수는 아래와 같은 기능을 수행합니다.

Single 값으로 이루어진 난수를 만드는 것이죠. 


Rnd 함수


로또 프로그램은 아무런 난수만 만들면 안되겠죠.

1부터 45사이의 값만을 가진 난수를 만들어야 합니다. 


특정 범위를 가진 난수를 만들기 위해서는 아래와 같은 방식을 이용해야 합니다.


Int ((최고값 - 최저값 + 1) * Rnd + 최저값)


따라서 1부터 45까지 값을 가진 난수를 만들기 위해서는 


Int ((45 - 1 + 1) * Rnd + 1) 


혹은


Int (45 * Rnd + 1)


을 이용할 수 있습니다. 


그럼 실질적으로 로또 프로그램을 VBA 엑셀 매크로 프로그래밍을 통해서 만들어보도록 할까요.

로또 프로그램은 1-45 사이의 랜덤수 6개와 보너스 번호 1개로 이루어지죠. 


코드를 한번 살펴볼까요. 


Sub DoLotto()


    Dim index As Integer

    

' 폰트 사이즈 설정

    Range("A1:B7").Font.Size = 9    

    

' For 구문을 통해서 6개의 랜덤수 생성

    For index = 1 To 6

            

        Cells(1, index) = CStr(index) + "번째 값"

        Cells(2, index) = Int(45 * Rnd + 1)

    

    Next

    

' 보너스 번호 생성

    Cells(1, 7) = "보너스 번호"

    Cells(2, 7) = Int(45 * Rnd + 1)


End Sub


코드 리뷰를 살짝해보면 6개의 랜덤수를 만들기 위해서 For 구문을 사용했죠. 그리고 보너스 번호를 위해서 한번더 랜덤 수(1-45)를 생성하였습니다.


첫번째 행은 값의 제목을, 두번째 행은 실질적은 값을 넣게 해놓았습니다. 


먼말하는지 나는 모르겠다면.... 제가 좀더 쉽게 설명할께요 ㅠㅠ



그럼 프로그래밍을 실행해보도록 합시다. 



아래와 같이 코드를 작성합니다. 위에 코드를 그대로 쓰시면 됩니다. 




코드를 실행(F5) 합니다. 코드 실행결과는 아래와 같습니다.

로또의 6개 번호와 보너스 번호가 잘나오네요.



하지만 위의 코드는 문제의 소지가 있는 코드이죠.

위와 같은 경우는 로또 프로그램이 잘 수행이 되었지만, 아래와 같은 경우의 값이 나올 수도 있습니다. 

바로 중복값이 나오는 경우인데요.


아래의 결과는 1번째와 5번째, 3번재와 6번째의 값이 동일한것을 볼 수 있습니다.

이러면 제대로된 로또가 아니죠.


열심히 짯는데, 버그투성이라니.. ㅠㅠ




이러한 문제는 추가적인 기능으로 해결할 수 있습니다.

이 부분은 다음 글에서 처리해보도록 할께요


그럼 이글에서는 RND 함수를 이용해서 랜덤 값을 구하고, 이를 로또 프로그램으로 적용하는 방법에 대해서 알아보았습니다.

그럼 이만 줄이겠습니다.


이 글이 도움이 되셨으면 아래의 하트를 눌러주세요.

댓글