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(5, 7) As 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 |
지역별로 시트 생성하여 나누기 (2) | 2017.05.16 |