ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 난수 생성기(로또)
    VB(A) 2017. 6. 24. 01:04

    http://cafe.naver.com/excelmaster/140186


    흔한 난수 생성기(로또)


    J1에 0~45 의 숫자를 입력하고 버튼을 누른다.

    1. 0을 입력하면 모든 셀에 난수가 출력.

    2. 1~45를 입력하면 B열에는 해당 숫자가 고정 출연


    Option Explicit
    Option Base 1
     
    Sub Macro()
     
        Dim IncludeNum As Integer
        Dim v(57As Integer
        Dim i As Integer
        Dim j As Integer
        Dim tmp As Integer
        
        '기존자료 삭제 및 포함되어야할 숫자 선언
        'J1이 0이면 모든 칸이 난수가 출력됩니다.
        Range("B1:H5").ClearContents
        IncludeNum = Range("J1").Value2
        
        For i = 1 To 5
            For j = 1 To 7
            
                Randomize
            
                Do
                    'J1에 숫자가 있으면 첫줄은 J1
                    If j = 1 Then
                        If IncludeNum > 0 Then
                            v(i, j) = IncludeNum
                            Exit Do
                        End If
                    End If
                    
                    '중복되지 않는 난수 생성
                    tmp = Int(46 * Rnd)
                    
                    If IsUnique(tmp, v) Then
                        v(i, j) = tmp
                        Exit Do
                    End If
                Loop
            Next j
        Next i
        
        Range("B1:H5").Value2 = v
        
    End Sub
     
    Function IsUnique(Num As Integer, Data As Variant) As Boolean
        '중복된 숫자 유무를 판단하는 사용자정의 함수입니다.
        
        Dim iFind As Integer
        Dim i As Integer
        
        On Error Resume Next
        
        With Application
            For i = 1 To 7
                iFind = .Match(Num, .Index(Data, , i), 0)
                If iFind > 0 Then
                    IsUnique = False
                    Exit Function
                End If
            Next i
        End With
        
        IsUnique = True
        
    End Function
     
    cs


    'VB(A)' 카테고리의 다른 글

    [월보용] 데이터 합치기  (0) 2017.09.01
    월보 취합 서식  (0) 2017.08.29
    [VB.Net] 파일 생성일자로 폴더 생성 후 파일이동  (0) 2017.06.04
    [VB.Net] 화면보호기  (0) 2017.06.03
    지역별로 시트 생성하여 나누기  (0) 2017.05.16

    댓글