【问题标题】:VBA, FOR LOOP, IF statement , get the value of the previous cellVBA,FOR LOOP,IF语句,获取前一个单元格的值
【发布时间】:2021-03-21 21:11:02
【问题描述】:

我想编写一个 VBA 脚本,例如从 K2 到 K 列中的最后一个单元格(我希望它是动态的),它会检查每个单元格,如果一个单元格为 0,那么该单元格应该获取上一个单元格的值。

我是这样开始的。我不确定这是正确的方法:

Sub getpreviouscellvalue()

For Each Cell In Range("K2:K26")
    If Cell.Value = 0 Then
        
        Cell.Value = ?
        
        Exit For
    End If
Next Cell

End Sub

或者应该是这样的代码(python):

list= [1,2,3,0,4,5]
for i in list;
a = list.index(i)
if i== 0;
list[a]=list[a-1]
Print(list)

我希望这是可以理解的。如果不能随意给我写信,我可以解释更多。

【问题讨论】:

  • 请告诉我们你在哪里:我们需要你自己组装的代码。
  • 我用代码编辑了我的帖子。谢谢ZygD

标签: excel vba loops if-statement


【解决方案1】:

这应该符合您的意图:

Sub getpreviousvalue()
    Dim cell As Range
    For Each cell In Range("K2:K26")
        If cell.Value = 0 Then
            cell.Value = cell.Offset(-1).Value
        End If
    Next
End Sub

【讨论】:

  • 非常感谢 ZygD。这正是我打算做的。你是最棒的。我还想问你,如果不是像现在 Range("K2:K26") 那样的固定范围,它会是一个总是变化的动态范围,那么代码会如何。例如有时它的 K30 有时是 40 等等,所以程序应该在到达最后一行数据时停止。感谢您的热心帮助。
  • 有可能,但最好单独提出一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 2013-09-02
相关资源
最近更新 更多