【发布时间】:2018-05-10 22:33:47
【问题描述】:
我正在遍历一系列单元格以检查值是否为 0。我的逻辑是如果单元格值为零,则单元格值是前一个单元格值。如果前一个单元格也为零,那么它就是下一个单元格的值。但我说如果最后一个单元格或第一个单元格为零怎么办?我也需要检查它,因为如果它是第一个单元格或最后一个单元格,则循环失败。我的问题是,通过最后一行作为地址的代码应该是什么。我知道最后一行,但我不知道如何将其写为具有已知列的地址。数据从第 2 行开始,然后到第 X 行。
For each Cell In rng
If Cell.Address="A2" Then
If Cell.Value=0 Then
Cell.Value=Cell.Offset(1,0).Value
End if
Elseif Cell.Address="AX" Then 'X is the last row
If Cell.Value=0 Then
Cell.Value=Cell.Offset(-1,0).Value
End If
Elseif Cell.Value=0 and Cell.Offset(1,0).Value=0 Then
Cell.Value=Cell.Offset(-1,0).Value
Elseif Cell.Value=0 Then
Cell.Value=Cell.Offset(1,0).Value
Else
Do Nothing
End If
Next
【问题讨论】:
-
RANGE是如何定义的?如果RANGE真的是(命名错误的)变量,那么RANGE(RANGE.Rows.Count, RANGE.Columns.Count).Address会给你该范围内的最后一个单元格。 -
澄清了这个问题。 RANGE 是一个范围,我的实际名称不同。将范围更改为 rng
-
我的评论仍然支持
rng-rng(rng.cells.count).address或rng(1).address是返回第一个和最后一个单元格地址的另一种方式。如果你想要这个专栏,你可以使用rng(1).Column
标签: excel if-statement dynamic vba