2017-09-29 1 views
-2

I 10 셀 A1을 사이에 무작위로 배포 할 가지고 A1 : A10에서 무작위로 배포하므로 10 개 중 3 개만 채우고 나머지 7 개는 비어있게됩니다.I 3 개 값 (5, 4, 8) 및 I 10 개 세포

어떻게 만들 수 있습니까? 예

:리스트의 순서를 Randomise 1~10

  • 행 번호의리스트 (또는 배열)를 확인 please see the screenshot

    please see the other screenshot

  • +0

    1에서 10 사이의 숫자를 선택하십시오. 1에서 10 사이의 다른 숫자를 선택하십시오 (첫 번째 숫자가 아닐 때까지 계속 입력하십시오). 1에서 10 사이의 다른 숫자를 선택하십시오 (첫 번째 숫자 또는 두 번째 숫자가 될 때까지 계속 입력하십시오). 첫 번째 숫자로 지정된 행에'5 '를 넣으십시오. 두 번째 숫자로 지정된 행에'4 '를 넣으십시오.세 번째 숫자에 지정된 행에'8 '을 넣으십시오. – YowE3K

    +0

    답장을 보내 주셔서 감사합니다. 내가 필요한 것을 이해하기 위해 게시 한 스크린 샷을 참조하십시오. – MiRO

    +0

    괜찮 았던 것입니다 - 당신이 의미하는 바를 이해했습니다. 제 의견은 당신에게 좋은 방법을 제공합니다. (나는 단계 # 1로 추가해야한다고 생각한다. "행 1 ~ 10의 내용을 지우려면 아무것도하지 말아라.") (그리고 "Pick a number"는 실제로 "** 무작위 ** 선택"이라고 생각한다. 번호 ",하지만 그게 분명하다고 생각했습니다.) – YowE3K

    답변

    0
    1. 플롯의 수치 무작위 순서 A1 : 10 *
    2. 이익!

    4, 5, 8이 arent 상관 번호가 생성 및 배열을 무작위 화 및 A1로 인쇄 빈 셀

    로 변환 될 수있다 : * 10

    Sub RunShuffle() 
        Dim i As Integer 
        Dim j As Integer 
        Dim MyArray(9) As Variant 
    
        'Fill the array with numbers 1 to 10 
        For i = LBound(MyArray) To UBound(MyArray) 
         MyArray(i) = i + 1 
        Next i 
    
        'Randomise the order of the array 
        ShuffleArrayInPlace MyArray 
    
        'Print the randomised array to A1:10 
        For j = LBound(MyArray) To UBound(MyArray) 
         Sheets(1).Cells(j + 1, "A").Value = MyArray(j) 
         If MyArray(j) <> 4 And MyArray(j) <> 5 And MyArray(j) <> 8 Then 
          Sheets(1).Cells(j + 1, "A").Value = "" 
         End If 
        Next j 
    
    End Sub 
    
    'This Sub shuffles the array given as input 
    Sub ShuffleArrayInPlace(InArray() As Variant) 
        Dim n As Long 
        Dim Temp As Variant 
        Dim j As Long 
    
        Randomize 
        For n = LBound(InArray) To UBound(InArray) 
         j = CLng(((UBound(InArray) - n) * Rnd) + n) 
         If n <> j Then 
          Temp = InArray(n) 
          InArray(n) = InArray(j) 
          InArray(j) = Temp 
         End If 
        Next n 
    End Sub 
    

    원본 무작위 화 코드 : CPearson.com

    +0

    고맙습니다. 이론적으로 솔루션이 작동 할 것입니다. 그러나 순서를 무작위로 추출하는 방법을 모르겠습니다. 목록의 숫자도 어떻게 그려야하는지, 더 설명해 주실 수 있습니까? – MiRO

    +0

    내가 추가 한 코드를 사용해보십시오. 약간 어려운 부분은 배열의 순서를 랜덤 화하는 것이 었습니다. 나는 CPearson에서 그것을 훔쳤다. – Noceo

    +0

    고마워요. :)하지만 제게 조금 더 도움을 줄 수 있고 자동으로 새로 고쳐서 시트에 새 데이터를 넣을 때마다 바꿀 수 있습니까? 또한 4, 5, 8을 선택하는 대신 셀에서 값을 가져 오는 방법은 무엇입니까? – MiRO

    1

    자동화하려는 경우 다음 VBA를 명령 단추에 연결할 수 있습니다. 숫자 4,5,8이있는 배열을 임의화할 수있는 방법에 대한 링크를 포함했습니다. TargetSheet라는 시트에서 실행 중이라고 가정합니다.

    Option Explicit 
    
    Sub AssignNumbers() 
    Dim wb As Workbook 
    Dim ws As Worksheet 
    Dim rng As Range 
    Dim x As Long, i As Long 
    Dim Arr() 
    
    Set wb = ThisWorkbook 
    Set ws = wb.Sheets("TargetSheet") 
    Set rng = ws.[A1:A10] 
    
    Arr = Array(4, 5, 8) 'You can randomize this array as follows (somewhat irrelevant as assignment is random): _ 
    http://www.cpearson.com/excel/ShuffleArray.aspx 
    
    rng.ClearContents 
    
    For i = 0 To 2 
        'Loop until we find an empty cell to place the value in 
        Do 
         x = Application.WorksheetFunction.RandBetween(1, 10) 
         'Exit the loop as soon as we find a place to put the value 
         If IsEmpty(rng.Cells(x, 1).Value) Then Exit Do 
        Loop 
        'Have found an empty cell - we can now set the value 
        rng.Cells(x, 1) = arr(i) 
    Next i 
    End Sub 
    
    +0

    와우, 그 덕분에 :)하지만 좀 더 나를 도울 수 있고 자동으로 만들어서 버튼을 만드는 시트에 새 데이터를 넣을 때마다 바꿀 수 있습니까? – MiRO

    +0

    @ YowE3K 고맙습니다. 내가 한 일은 다음을 추가하는 것입니다 : IsEmpty (rng.Cells (x, 1) .Value) then rng.Cells (x, 1) = Arr (i) i = i - 1 End If 다음 i – QHarr

    +0

    그럴 수도 있지만 내 개인적인 의견은 루프 변수를 수정하는 것은 위험한 습관입니다. (보통 'For' 루프가'시작 값 '에서'종료 값 '으로 단순한 루프가되지 않는 코드를 유지하는 것이 더 어려워집니다.) 그렇게 할 수 있다면 회피하는 것이 좋습니다. – YowE3K

    2

    는 또한 일반 엑셀 수식이를 달성하고 여기 당신이 그것을 어떻게 할 수

    • Column A : 당신이 언급 한 세 가지 값 (5, 4, 8을 입력) 및 하나의 빈 공간이있는 다른 7 개의 셀.

    • Column B이 fomrula =INDEX($A$2:$A$11,RANK(B2,$B$2:$B$11))

    이것이하는 일은 순위에 의해 비 중복 무작위 목록을 반환하는 것입니다 기입 :이 공식 =RAND()

  • Column C을 작성합니다. 따라서 빈 공간이있는 다른 7 개의 셀을 가져야합니다.

    헤더 행이 있으므로 필요에 맞게 수식을 약간 조정해야 할 수도 있습니다. 시도하고 알려주세요.

  • 관련 문제