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

Excel 在范围内增加值,直到相应的单元格值增加指定量,excel,increment,vba,Excel,Increment,Vba,我有这个问题要解决。也就是说,我需要一个代码,将相同的值放在这个范围内,直到相应的单元格值增加1。一旦它这样做了,该值需要增加0.2,并放置增加的数字,直到相应的单元格值再次增加1 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 <

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

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
子按钮4\u单击()
范围1=图纸(3)。范围(“g2”)。结束(xlDown)。行
range2=“g2:g”和range1
对于i=2到范围1

基于注释的If单元格(i,7).Value 360和单元格(i,7),并保持代码结构不变,一个简单的解决方案是在上一条If语句之后添加一条新的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

试试看,让我知道。

根据您的代码,我不太明白您想要完成什么。所以也许你能帮我理解:1)你有一个随机值的范围,
G2:G[lastrow]
。你能解释一下这些值是什么吗2)然后检查所有这些值,如果它们符合你的标准,你就把H列设为60(每个单元格)。这里没有任何地方可以进行1的递增,您只是将实数值设置为60。您试图将什么范围设置为+1,以及之前的值是什么。一旦它们是+1,你就需要在相同的值上加上.2?现在是60.2?1)
G2:G[lastrow]
包含以分钟为单位的时间。2) 代码的第一部分使用值60(温度)填充单元格,直到达到360分钟的时间。然后我需要代码每分钟将值60增加0.2,直到460分钟。因此,对于包含360-361之间所有值的范围,代码应填写60.2的值。对于361-362,值为60.4,依此类推。我在单元格G2到G461中输入了数字,从1到460,它似乎完全按照您的要求工作。我运行了宏,它一直向下放置了60。然后从G361(值361)到G460(值460),每个单元格的值递增0.2,直到80。链接的是我拍摄的两张截图。这些是你想要达到的结果吗?如果不是,请您解释一下您已经实现的.2递增有什么不正确之处?问题是,只有当分钟数是每行递增一的整数时,这才有效。我的数据是小数:好的,还有一个问题:在
360.0
360.1
360.2
360.3
等处,值应该保持在60。然后在
361.0
361.1
361.2
等处
,该值应保持在60.2?因此,您只希望当
G2:G[lastrow]
中的值增加一个完整整数时发生.2增量?很抱歉,它不起作用。没有错误,但没有执行它应该执行的内容(我猜它不符合
IF
语句中的标准),因此任何大于361的内容都没有价值……您能给我看一下电子表格的屏幕截图,其中G列大约为360吗?在我的工作表上,它是360.0到360.9,右边的单元格是60.0。当它达到361时,该值变为60.2,然后变为361.1,并保持为60.2。下面是我的屏幕截图:()在我取整了列
G
值之后,发生了这样的事情:,仍然不对我更新了我的回复,并更改了两件事。我将您最初的大IF语句改为:
和单元格(I,7)太棒了!它现在确实按预期工作。欢迎光临!
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