Excel VBA中使用Range时,有一个End属性,以Range单元格为基准定位到其上、下、左、右最后一个有数据的单元格。
1. 打开Visual Basic,添加模块和过程,称之为“单元格操作3”。
Sub 单元格操作3()
End Sub
2. 以A100单元格为基准(实际案例中数据量大的情况可以最后一个单元格为准),定位到A列中最后一个数据所在的单元格。
3. 如图所示,输入Range后接End属性,End之后会自动提示方向参数选哪个。
4. 示例中我们选择向上的方向,并且用Select选中所定位的单元格。
Sub 单元格操作3()
Range("A100").End(xlUp).Select
End Sub
5. 回到上一篇文章中的案例,在B列中判断如为“A班”时,则在其右侧一列输入姓名编号。
这次我们用for each循环,在数据固定的时候,我们可以直接写出循环的范围,如图。
Sub 单元格操作3()
Dim rng As Range
For Each rng In Range("A2:A10")
Next
End Sub
6. 如果B列之后还要继续添加数据,则需要不断地修改上面代码的范围,这时我们就可以用到End属性,如图。
Sub 单元格操作3()
Dim rng As Range
For Each rng In Range("B2:B" & Range("B100000").End(xlUp).Row)
Next
End Sub
Range("B100000").End(xlUp).Row返回的值是B列最后一个数据所在单元格所在的行号。
7. 添加if判断的语句在for each循环里。
Sub 单元格操作3()
Dim rng As Range
For Each rng In Range("B2:B" & Range("B100000").End(xlUp).Row)
If rng = "A班" Then
rng.Offset(0, 1) = "A" & rng.Row - 1
End If
Next
End Sub
8. 执行以上代码后,即可在C列得到相应的数据。
以上示例只是用于演示,实际应用场景请根据自己的需要进行相应的设计或调整。