ITPub博客

首页 > 数据库 > 数据库开发技术 > VBA循环结构没过瘾,那就再来一篇

VBA循环结构没过瘾,那就再来一篇

原创 数据库开发技术 作者:猴子数据分析 时间:2021-03-11 21:00:43 0 删除 编辑


这是免费教程《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进行数据分析?



原文作者:猴子数据分析;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-01-16

  • 博文量
    865
  • 访问量
    345573