VB(A)

합계가 될 때까지 숫자를 랜덤하게 뿌리기

당근쨈 2015. 7. 27. 10:04
옆에 기준 내용이 있다.
0 이 있는 곳은 0을 그대로 가져오고
나머지는 합계가 될 때까지 랜덤하게 값을 뿌려주는 매크로

Option Explicit
Sub NumGenerate()
    Dim rng As Range
    Dim valR(1 To 7As Integer
    Dim varA As Variant
    Dim i As Integer
 
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With
 
    Set rng = Range("D14")
    varA = Application.Transpose(Range("B6:B12"))
 
    Randomize
 
    Do
        For i = 1 To 7
            If varA(i) = 0 Then i = i + 1
            valR(i) = Int(Rnd * 30 + 1)
        Next i
    Loop Until Application.Sum(valR) = rng
 
    rng.Offset(-8).Resize(7= Application.Transpose(valR)
 
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With
 
End Sub
cs



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

대량의 데이터 변환  (0) 2015.07.27
대괄호 이동  (0) 2015.07.27
동일한 양식의 여러 엑셀파일 취합  (0) 2015.07.27
중복된 것은 표시해주면서 하나만 뿌림  (0) 2015.07.27
그룹별 오름차순 정렬 v2  (0) 2015.07.27