EP02. “Loop through Entire Column 遍历整列”
🔒 登录后可标记已读- 这篇教怎么用
For循环搭配Rows.Count遍历一整列所有可能的行,不用自己猜数据到底有多少行 - 场景:把 A 列所有小于 D2 指定值的数字标成红色
- 前置知识:EP01 的循环概念和
If Then判断 - 学完能理解为什么处理「整列」时要用
Rows.Count,而不是写死一个数字
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等),Excel 2007 之后工作表最多有 1,048,576 行。
完整 VBA 代码
Dim i As Long
Columns(1).Font.Color = vbBlack
For i = 1 To Rows.Count
If Cells(i, 1).Value < Range("D2").Value And Not IsEmpty(Cells(i, 1).Value) Then
Cells(i, 1).Font.Color = vbRed
End If
Next i
代码说明
- 声明变量
i用Long而不是Integer——因为Long的容量比Integer大,而工作表最多有超过一百万行,Integer装不下这么大的数字 Columns(1).Font.Color = vbBlack先把 A 列所有单元格的字体颜色重置为黑色,避免上一次运行留下的红色标记干扰这次结果For i = 1 To Rows.Count用Rows.Count(当前 Excel 版本工作表的总行数)当循环上限,不管用的是哪个 Excel 版本,这行代码都能遍历到最后一行If Cells(i, 1).Value < Range("D2").Value And Not IsEmpty(Cells(i, 1).Value) Then判断这一行 A 列的值是否小于 D2 的值,同时用Not IsEmpty(...)排除空白单元格(空单元格会被忽略,不参与比较)- 符合条件的单元格,字体颜色改成红色
怎么运行
在 D2 输入比较基准值,A 列填一些数字,Alt + F11 打开 VBA 编辑器执行代码(或点命令按钮),A 列所有小于 D2 值的数字会变成红色字体,其余保持黑色。
[截图:运行宏后 A 列的效果,小于 D2 基准值的数字变成红色字体,其余维持黑色]
学完你会
- ✅ 用
Rows.Count遍历整列,不用猜数据有多少行 - ✅ 知道遍历整列的计数器要用
Long而不是Integer - ✅ 用
IsEmpty排除空白单元格,避免误判
常见错误
- 用
Integer声明循环变量而不是Long——工作表行数超过 32767(Integer上限)就会溢出报错,遍历整列必须用Long - 忘记先把颜色重置成黑色(
Columns(1).Font.Color = vbBlack),重复执行程序后,D2 值改变了,但之前标红的单元格如果不再符合条件也不会自动变回黑色,久而久之标记会不准确 - 忘记加
Not IsEmpty(...)判断,空白单元格在 VBA 里会被当作数值 0 参与比较,如果 D2 输入负数,所有空白格都会被误判成"小于 D2"而被标红
Sources
Blog / Website: