EP02. “Dynamic Range 动态范围应用”
🔒 登录后可标记已读- 这篇结合 EP01 的 CurrentRegion,写一个宏自动找出一批数字里的最大值
- 找到最大值后自动把它标成红色
- 不管数据实际有多少笔,宏都能正确处理,不用改代码
- 前置知识是 EP01 CurrentRegion、For Each 循环
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
完整代码
Dim maximum As Double, rng As Range, cell As Range
Cells.Interior.ColorIndex = 0
Set rng = Range("A1").CurrentRegion
maximum = WorksheetFunction.Max(rng)
For Each cell In rng
If cell.Value = maximum Then cell.Interior.ColorIndex = 22
Next cell
逻辑说明
Cells.Interior.ColorIndex = 0:先清掉整张工作表原本的背景色,避免上次执行留下的标记干扰这次结果Range("A1").CurrentRegion:自动抓出 A1 所在的连续数据区域,数据笔数变多变少都不用改代码WorksheetFunction.Max(rng):用 Excel 的 MAX 函数算出这个范围里的最大值- 循环走过范围里每一格,值等于最大值的就标成红色(ColorIndex 22)
[截图:运行宏后的工作表,数据区域里数值最大的那一格背景变成红色,其余维持无底色]
学完你会
- ✅ 写出一个能自动标记最大值的宏,不用管数据笔数变化
- ✅ 用 CurrentRegion 搭配 For Each 循环走过整个动态范围
- ✅ 知道执行宏前要先清除旧的标记颜色,避免结果混乱
常见错误
- 忘记先清除旧的背景色,重跑一次之后画面出现好几个红色标记
- 数据不是从固定的 A1 开始,
CurrentRegion的起点单元格没对应实际数据的左上角 - 如果最大值有重复(好几格并列最大),代码会把所有相同的格子都标红,不是只标一个
Sources
Blog / Website: