Excel 从上到下滚动列并替换0';s与上面单元格中的值相同

Excel 从上到下滚动列并替换0';s与上面单元格中的值相同,excel,vba,Excel,Vba,我必须从上到下滚动一列(实际上是两列,但如果我能让一列运行,我可以管理),并用上面的单元格值替换0或空格。这就是我目前所拥有的(它不起作用): 如此接近: Sub ReplaceZeros() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim lr As Long Dim i As Long Dim ws As Worksheet Set ws = ActiveSheet Wi

我必须从上到下滚动一列(实际上是两列,但如果我能让一列运行,我可以管理),并用上面的单元格值替换
0
或空格。这就是我目前所拥有的(它不起作用):

如此接近:

Sub ReplaceZeros()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim lr As Long
Dim i As Long
Dim ws As Worksheet
Set ws = ActiveSheet
With ws
    lr = .Cells(.Rows.Count, "A").End(xlUp).Row
    For i = 2 To lr
        If .Cells(i, "A").Value = 0 Then .Cells(i, "A").Value = .Cells(i - 1, "A").Value
    Next i
End With

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub
注意:您从底部开始的循环向上,这很好,但是如果一行中有两个“0”,则第二个将保持为零,再加上
步骤7000
使循环一次跳过7000行


然后,如果您只想使用
单元格(i-1,“A”)得到上面的值,那么value
将返回正上方单元格的值。

它上面的
列是什么意思?哦,我是指上面的单元格值。你说得对,我的同事刚刚教了我这个把戏。谢谢你给我的建议,关于如何一次在多个专栏中实现这一点?@ichoi,我的朋友是一个新问题。但是,它需要另一个从1到列范围的循环,并且您需要用循环中的变量替换单元格引用中的所有“A”。试试看,如果你被困在一个新问题上。
Sub ReplaceZeros()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim lr As Long
Dim i As Long
Dim ws As Worksheet
Set ws = ActiveSheet
With ws
    lr = .Cells(.Rows.Count, "A").End(xlUp).Row
    For i = 2 To lr
        If .Cells(i, "A").Value = 0 Then .Cells(i, "A").Value = .Cells(i - 1, "A").Value
    Next i
End With

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub