在范围内递增值,直到相应的单元格值增加指定的量

时间:2017-07-03 10:50:42

标签: excel-vba increment vba excel

我有这个问题需要解决。也就是说,我需要在相应的单元格值增加1之前将相同值放在范围内的代码。一旦它完成,值需要增加0.2并增加数字,直到相应的单元格值再高一个

Sub Button4_Click()


  range1 = Sheets(3).Range("g2").End(xlDown).Row
  range2 = "g2:g" & range1





   For i = 2 To range1

   If Cells(i, 7).Value <= 360 Then

   Cells(i, 8) = 60

   range3_n = Cells(i, 8).Row

   End If
   Next





  j = 0.2
  k = 1
  For i = range3_n To range1



  If Cells(i, 7) > 360 And Cells(i, 7) <= (360 + k) And Cells(i, 7) <= (360 + 
  100) Then

  Cells(i, 8) = 60 + (k * j)
  k = k + 1
  End If
  Next

   MsgBox ("END")    


   End Sub

1 个答案:

答案 0 :(得分:0)

基于这些评论,并保持代码结构与它完全相同,一个简单的解决方案是在最后一个之后添加一个新的IF语句:

IF (Cells(i, 7) - Int(Cells(i, 7)) = 0) Then

代码应如下所示:

Sub Button4_Click()

range1 = Sheets(1).Range("g2").End(xlDown).Row
range2 = "g2:g" & range1

For i = 2 To range1
    If Cells(i, 7).Value <= 360 Then
        Cells(i, 8) = 60
        range3_n = Cells(i, 8).Row
    End If
Next

range3_n = range3_n + 1 'start at cell 361 instead
j = 0.2
k = 1

For i = range3_n To range1
  If Cells(i, 7) > 360 And Cells(i, 7) <= (361 + k) And Cells(i, 7) <= (360 + 100) Then
    If Int(Cells(i - 1, 7)) - Int(Cells(i, 7)) <> 0 Then
        Cells(i, 8) = 60 + (k * j)
        k = k + 1
    Else
        Cells(i, 8) = Cells(i - 1, 8)
        End If
  End If
Next i

MsgBox ("END")

End Sub

这样做,它取了单元格的值,减去该值的整数版本(360.1 = 360,365.4 = 365等),并确保等于零。任何小数值&gt; .0将失败,并且不符合标准。

Example:
360.0 - 360 = 0 PASS
360.1 - 360 = .1 FAIL
360.4 - 360 = .4 FAIL
360.7 - 360 = .7 FAIL
361.0 - 361 = 0 PASS

尝试一下,让我知道。