这是免费教程《Excel VBA:办公自动化》的第10节,介绍while循环结构。
1.认识VBA:什么是VBA?
2.这些掌握了,你才敢说自己懂VBA
3.VBA变量5年踩坑吐血精华总结
4.VBA中重要的强制申明,谁看谁明白
5.VBA掌握循环结构,包你效率提高500倍
6.精通VBA分支结构,少写程序100行
7.VBA程序报错,用调试三法宝,bug不存在的
8.VBA字符串介绍,这篇就够了
9.还自己写代码?VBA录制宏了解下
在上次for循环分享完后,有同学给我发私信说“猴子,上次那个for循环用着确实挺香,但是我每次都得修改那个循环的次数,这样挺麻烦的,有没有那种更智能的语法呢?”
那只有while循环结构」能够满足你的需求了。
不用说,又一个经典的天台式微笑上扬我的嘴角。
客官切莫着急,且听猴子娓娓道来~
1.whileE语法结构
图片展示了「WHILE循环结构」的2种用法,都表达了如果符合判断条件,那么执行循环体内的其他语句,否则直接结束上述循环。
用法1是由关键字「WHILE」和「WEND」组成,而用法2由关键字「DO WHILE」和「LOOP」组成,二者表达意思一样。由于2的用法更加丰富和灵活,因此我们见到它的频率也更高些。
上面说了一些比较理论的东西,我们上案例实操一下。
2.while案例实操
案例:根据右侧的富豪等级排名规则,判断左侧各富豪的富豪尊称,将答案写在D列单元格。(实际工作中数据会非常多,这里仅以10条数据作为演示)
思路分析:由于数据行数非常多,我们无法预知有多少数据,因此我们需要采用「WHILE循环结构」。
然后用「IF分支结构」根据右侧排名规则进行判断,将判断结果写入左侧D列。由于既涉及到循环,又涉及到判断,所以这种业务需求要使用「嵌套结构」。
根据上文的代码,我们模拟一下这个小程序的运行过程:
1)程序读取第1、2行
程序使用了「强制申明」,定义了变量i且赋予其初始值为3
2)程序执行WHILE循环体
程序读取「WHILE Cells(i, 3) <> ""」语句时,由于「i=3」,因此可以翻译为:单元格C3的值是否为空。通过查看左侧发现「单元格C3=1447」,不为空。于是,执行WHILE循环体内的IF条件语句。
然后,执行IF语句,通过左侧可以看到「单元格C3=1447」,大于1000,因此接着执行下一句。
最终将第1个判断结果写入到D3单元格内。
直到程序执行到,「i = 13」时,通过作图看到「单元格C13 = ""」,此时跳出WHILE循环,由于下面没有其他语句,所以执行End Sub程序结束。
3.总结
1)通过以上案例可以发现,当我们无法预知数据的总行数,且又需要使用循环挨个进行判断时,这种业务场景就可以使用「WHILE循环结构」。
2)WHILE循环结构分为2大类语法,一种是「WHILE…END」,另一种是「DO WHILE…LOOP」。
好了,这个懒人智能循环结构,你学会了吗?
推荐:如何用Excel进行数据分析?