VB(A)

숫자 섞기

당근쨈 2015. 10. 2. 19:12
숫자 섞는 매크로

13개의 숫자 중 3개만 출력함. 반복되지 않게

Option Explicit
Private varOut(1 To 3As Double
 
Sub Macro()
 
    Dim i As Integer
    Dim j As Integer
    Dim varIn As Variant
    
    Dim rnG As Range
    
    varIn = Application.Transpose(Selection)
    Selection.Offset(, 3).CurrentRegion.ClearContents
    
    For Each rnG In Selection
        For i = 1 To 3
        
            Do
                j = Int((UBound(varIn) - LBound(varIn) + 1* Rnd + LBound(varIn))
            Loop While InArray(varIn(j))
            
            varOut(i) = varIn(j)
            
        Next i
        
        rnG.Offset(, 3).Resize(, 3= varOut
    Next rnG
    
    Selection.Offset(, 3).CurrentRegion.NumberFormat = "0.00%"
End Sub
 
 
 
 
Function InArray(vaR As Variant) As Integer
    
    On Error GoTo j
    
        InArray = Application.Match(vaR, varOut, 0)
        
    On Error GoTo 0
 
j:
End Function
cs



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

두가지 조건을 만족하는 값 나열  (0) 2015.10.16
체크박스로 시트 보호 해제 및 셀 잠금 해제  (0) 2015.10.14
엑셀 2010 이상 이미지 삽입  (0) 2015.09.22
맨 앞의 값만 가져오기  (0) 2015.09.15
Dictionary  (0) 2015.09.12