录制的宏只能处理固定范围,加上循环之后,宏才能处理任意多少行数据。循环是宏从能用到好用的分水岭。
计次循环:知道次数时用
从第几行到第几行、从第一张表到最后一张表这类情况,用计次循环最直观。写法是给出起点与终点,中间写要重复的动作。适合行数已知或可以先算出来的场景。
条件循环:不确定次数时用
不断向下检查直到遇到空单元格,这类情况用条件循环。每轮判断一次条件,成立就继续,不成立就退出。条件是循环的刹车,写不清楚就容易停不下来。
遍历集合的写法
遍历所有工作表、所有文件、所有符合条件的数据行,都可以用遍历集合的方式。它不关心具体数量,只关心每一个元素,因此适应性最强,也最推荐初学者优先掌握。
循环里最常做的事
读取一行的数据、按条件判断、把结果写入另一张表、累加计数或合计。把这几件事与循环组合,就能完成绝大多数的批量处理任务。
避免死循环的三个习惯
循环变量必须能变化;退出条件必须能达成;先在少量数据上试运行。三条习惯落实后,宏就不会卡死,即使出错也能很快发现。
性能上的注意点
逐单元格读写大量数据会非常慢。更好的做法是把整个区域一次性读入内存处理,再一次性写回。WPS的宏里可以关闭屏幕刷新与自动计算,批量处理时速度提升明显。
一个典型场景
把一张明细表按部门拆成多份:先取出部门列表,再对每个部门循环筛选记录并写入新表。这个场景把循环与判断结合得很自然,也是实际工作中最常遇到的需求之一。
学完循环能做什么
可以处理行数会变化的表格、批量处理多张工作表、遍历文件夹里的文件。到这一步,你已经能改造大多数录制出来的宏,让它适应真实数据。
| 类型 | 适用情况 | 注意点 |
|---|---|---|
| 计次循环 | 次数已知 | 上下界要算准 |
| 条件循环 | 次数不确定 | 退出条件必须能达成 |
| 遍历集合 | 逐项处理 | 最适合初学者 |
先把范围想清楚再写循环
循环最容易出的问题不是语法,而是边界算错。写之前先确认起始与结束位置,用少量数据试跑一次,再放开到全量。WPS宏的即时窗口可以用来确认某个单元格的行号是否符合预期。
循环是宏里最有价值的一块能力。把WPS宏中的循环与判断配合使用,你就能让软件替你处理那些重复但数量不定的工作。
