Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA、FOR LOOP、IF语句,获取上一个单元格的值_Excel_Vba_Loops_If Statement - Fatal编程技术网

Excel VBA、FOR LOOP、IF语句,获取上一个单元格的值

Excel VBA、FOR LOOP、IF语句,获取上一个单元格的值,excel,vba,loops,if-statement,Excel,Vba,Loops,If Statement,我想写一个VBA脚本,它在一列中运行,例如从K2到K列中的最后一个单元格(我希望它是动态的),它检查每个单元格,如果一个单元格为0,那么该单元格应该获得上一个单元格的值 我是这样开始的。我不确定这是正确的方式: Sub getpreviouscellvalue() For Each Cell In Range("K2:K26") If Cell.Value = 0 Then Cell.Value = ?

我想写一个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):


我希望这是可以理解的。如果您不愿意写信给我,我可以详细解释。

这应该符合您的意愿:

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非常感谢ZygD。这正是我想要做的。你是最棒的。我还想问一下,如果不是像现在这样的固定范围(“K2:K26”),而是一个不断变化的动态范围,代码会是什么样子。例如,有时它的K30有时是40等等,所以程序应该在到达最后一行数据时停止。谢谢你的帮助。这是可能的,但最好单独问一个问题。
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