2016-12-24 48 views
0

當我運行代碼時,它會生成一個介於100和210之間的隨機數字,我希望我的j按以下方式進行評估,但不會發生這種情況。我的代碼「vba」有什麼問題

它爲j生成數字,但它不符合我編碼的條件。

Range("J12").Formula = "=RANDBETWEEN(100,210)" 

x = Range("J12").Value 


    If x < 109 And x >= 100 Then 
j = 100 

ElseIf x > 109 And x < 119 Then 
    j = 110 

ElseIf x > 119 And x < 129 Then 
    j = 120 

ElseIf x > 129 And x < 139 Then 
    j = 130 

ElseIf x > 139 And x < 149 Then 
    j = 140 

ElseIf x > 149 And x < 159 Then 
    j = 150 

ElseIf x > 159 And x < 169 Then 
    j = 160 

ElseIf x > 169 And x < 179 Then 
    j = 170 

ElseIf x > 179 And x < 189 Then 
    j = 180 

ElseIf x > 189 And x < 199 Then 
    j = 190 

Else: j = 200 

    End If 

Range("I12").Value = j 
+0

難道你打算有利於價值200的引入偏見實現?如果不是,爲什麼還要用'J12'來代替'I12'中的公式'= 100 + 10 * RANDBETWEEN(0,10)'? –

回答

1

編輯添加veeery短替代(一看便知的底部)

,那是因爲你必須計算自動和後Range("I12").Value = j聲明中的工作表被計算RANDBETWEEN()公式你把J12被重新計算所以你看不出它與您在I12以前寫過這樣最後重新計算

j你可以使用這個

Sub main() 
    Dim x As Long, j As Long 

    With Range("J12") 
     .Formula = "=RANDBETWEEN(100,210)" 
     .Value = .Value 

     Select Case .Value 
      Case 100 To 108 
       j = 100 

      Case 109 To 118 
       j = 110 

      Case 119 To 128 
       j = 120 

      Case 129 To 138 
       j = 130 

      Case 139 To 148 
       j = 140 

      Case 149 To 158 
       j = 150 

      Case 159 To 168 
       j = 160 

      Case 169 To 178 
       j = 170 

      Case 179 To 188 
       j = 180 

      Case 189 To 198 
       j = 190 

      Case Else 
       j = 200 

     End Select 
    End With 
    Range("I12").Value = j 
End Sub 

BTW相同的結果是由下面的代碼

Sub main()  
    With Range("J12") 
     .Formula = "=RANDBETWEEN(100,210)" 
     .Value = .Value 
     .Offset(, -1).Value = IIf(.Value > 208, 200, Int((.Value + 1 - 100)/10) * 10 + 100) 
    End With 
End Sub 
+0

它工作。感謝您的幫助。我在那之前試過了case case方法,但是我找不到一種方法來使x值在100到108之間...所以我知道了。再次感謝你。 –

+0

不客氣。然後,您可能想要將答案標記爲已接受。謝謝! – user3598756

+0

您在底部的推定等效代碼並不等同。當'RANDBETWEEN(100,210)'返回209或210時,代碼計算值210,而其他代碼計算200.OP的規範引入了偏向於值200的輕微偏差,儘管這可能是意外的。 –