首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VBA大牛用了都说好的嵌套循环

VBA大牛用了都说好的嵌套循环

原创
作者头像
猴子数据分析
修改于 2021-03-28 02:34:56
修改于 2021-03-28 02:34:56
4K0
举报
文章被收录于专栏:猴子数据分析猴子数据分析

这是免费教程《Excel VBA:办公自动化》的第11节,介绍嵌套循环结构。

1.认识VBA:什么是VBA?

2.这些掌握了,你才敢说自己懂VBA

3.VBA变量5年踩坑吐血精华总结

4.VBA中重要的强制申明,谁看谁明白

5.VBA掌握循环结构,包你效率提高500倍

6.精通VBA分支结构,少写程序100行

7.VBA程序报错,用调试三法宝,bug不存在的

8.VBA字符串介绍,这篇就够了

9.还自己写代码?VBA录制宏了解下

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

看了前前面的系列VBA内容,我想大家肯定都发现一个问题:前面所有实战案例都是在处理「单列多行」问题,可实际工作中我们往往遇到的是「多行多列」问题,这个问题应该如何处理呢?

我想说的是,这一节嵌套循环的分享就是专门谈论这个问题的。

1.什么是循环嵌套?

所谓的「循环嵌套」就是将我们前面所分享的分支结构循环结构等组合起来,然后完成单个知识点难以单独完成的复杂任务。

通俗解释就是:IF循环WHILE循环大家组合在一起。你中有我,我中有你,实现工作的实际需求。

2. 循环嵌套案例实操

案例:将利用「1-宏程序」根据「2-层级划分」的规则,对「3-数据区域」数据进行处理,形成「4-输出结果」。

首先,我们对这个案例的需求进行初步分析:

“利用「1-宏程序」”就是绘制一个颜值较高的圆角矩形,然后将其指定我们将要写的宏程序

“根据「2-层级划分」的规则”就是根据右侧的分级结构条件,利用IF分支结构进行指定条件判断。

“对「3-数据区域」数据进行处理”就是选择自己擅长的循环结构,对指定的数据区域进行逐个循环。

“形成「4-输出结果」”就是在指定位置输出指定格式的结果。

分析完上述的需求以后,我们基本是思路已明,那就继续前行。

和前面一样,首先,我们将已实现案例功能的代码展示出来;然后,阐述该段代码的主要架构;最后,模拟代码的运行,以便于加深大家的理解。

通过上图展示的代码,我们可以看到整个代码的核心架构采用了3层嵌套结构,分别为:

第1层的Do...While循环结构,其主要用来控制表格「行」方向的循环;

第2层的For循环结构,其主要用来控制表格「列」方向的循环;

第3层的IF分支结构,其主要用对指定条件进行判断。

通过3者组合起来形成的循环嵌套结构,最终完成了上述案例中较为复杂的「多行多列」需求。

根据上文的代码,我们模拟一下这个小程序的运行过程

1)程序读取前5行

程序使用了「强制申明」,定义了变量i和变量j,且将变量i赋初始值为3,而赋值变量i为3的主要原因是:因为变量i控制「行」方向的循环,而数据区域的判断是从第3行开始的。

2)程序执行Do...While循环体

程序读取「Do While Cells(i, 2) <> ""」表明程序进入了第1层的「行循环」,换句话就是:单元格B3的值是否为空?我们通过查看左侧发现「单元格B3=738」,不为空。然后,程序进入下一行执行。

3)程序执行For循环结构

程序读取「For j = 2 To 7」表明程序进入了第2层的「列循环」,换句话就是:j的取值在2到7之间,每循环一次j的值就增加1 ,直到j=7时整个For循环结束。

看到这里,可能大家有些疑问了,为什么变量i要限制它的取值范围?

大家心中肯定早就拥有了自己的答案:之所以将变量j的值限定在2-7之间,是因为我们需要判断的数据区域主要分布在B列-G列,其对应的cells数字值就是2-7。

4)程序执行IF分支结构

至此程序进入了If分支结构,通过前面我们可以知道此时:i = 3,j = 2,即:「Cells(2, 3)」表示「单元格B3」,通过查看左侧数据可以看到「单元格B3 = 738」,其位于「富农」范围区间,那么很明显只有第二个分支结构符合上述条件,即:程序自动执行「ElseIf Cells(i, j) >= 500 And Cells(i, j) < 700 Then」和「Cells(i, j) = Cells(i, j) & " | 富农"」。

而由于根据规则,符合条件后的单元格,将以指定的格式——「收入 | 等级」写入结果,比如:「738 | 土豪」。因此,才会出现「Cells(i, j) = Cells(i, j) & " | 富农"」这句代码。

然后,等到变量j执行完了其在2-7区间的所有取值后,原表第3行所有的数据将会转换完成,如下图:

换句话的意思就是:当「i = 3」时,For分支结构要循环1轮变量j,对于原表来说其就完成了第3行数据的转化。

5)程序读取「i = i + 1」和「Loop」

当程序执行到「i = i + 1」时候,表明上一轮变量i的循环执行已经完成;而程序执行到「Loop」时,则表明程序准备执行下一轮。

当程序符合「Do While Cells(i, 2) <> ""」这个条件时,程序将继续执行下一轮。一旦不符合上述条件,那么整个程序将跳出「Do...While」循环。

当「i = 15」时,此时「Cells(i, 2)」表示「单元格B15」,查看左侧表格可以发现,单元格为空,不符合条件,由于下面没有其他代码,进入「End Sub」语句,直接结束。

3.总结

循环嵌套就是将我们前面所分享的分支结构、循环结构等组合起来,然后完成单个知识点难以单独完成的复杂任务。

通过上文我们可以发现:循环嵌套可以类比为乐高积木,用不同的积木组合不用的东西。至于组合成什么,则取决于你的思考、实践,再思考和再实践,如此反复。

我们发现,其实世界上很多东西都是由不同的小模块组成的。知识也是这样,只有不断的积累、不断的实践,而其他的都交给时间就好了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
VBA循环结构没过瘾,那就再来一篇
这是免费教程《Excel VBA:办公自动化》的第10节,介绍while循环结构。
猴子数据分析
2021/03/14
1.7K0
VBA掌握循环结构,包你效率提高500倍
这是系列免费教程《Excel VBA:办公自动化》,还是老规矩,看看我们走到哪里了。
猴子数据分析
2020/10/07
1.7K0
VBA数组(三)数组赋值
大家好,上节介绍了在使用数组之前如何声明数组,本节就来介绍静态数组如何赋值。(动态数组会单独一节讲解)
无言之月
2019/10/13
12.9K0
还自己写代码?VBA录制宏了解下
我们回顾下之前的内容,主要涉及到变量、强制申明、For循环结构、IF分支结构、程序调试以及重要的字符串知识等内容,可以看到我们已经学到了很多实用性的VBA内容。
猴子数据分析
2020/11/20
2.1K0
VBA字符串介绍,这篇就够了
是的,所有语言的数据类型就那么几种,而字符串就是其中重要的一种,也是基础中的基础,值得我们好好研究。
猴子数据分析
2020/11/13
2.3K0
VBA程序报错,用调试三法宝,bug不存在的
如果我们在刀法招式的基础之上,再掌握更多的“磨刀”心法,那么我们的刀用起来才会又好又快。
猴子数据分析
2020/10/23
3.2K0
VBA变量5年踩坑吐血精华总结
案例:在「单元格B3」输入不同的行号,然后点击「显示答案」按钮,程序就会自动计算右边相应题目的答案,如何实现?
猴子数据分析
2020/09/15
1.9K0
VBA变量5年踩坑吐血精华总结
Excel VBA编程教程(基础一)
说简单点,VBA 是运行在 Microsoft Office 软件之上,可以用来编写非软件自带的功能的编程语言。Office 软件提供丰富的功能接口,VBA 可以调用它们,实现自定义的需求。基本上,能用鼠标和键盘能做的事情,VBA 也能做。
全栈程序员站长
2022/08/11
18.3K0
Excel VBA编程教程(基础一)
C语言循环结构与循环嵌套-学习十
break语句和continue语句 用break语句提前终止循环。 break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。 只能用于循环语句和switch语句之中,而不能单独使用 用continue语句提前结束本次循环。 有时并不希望终止整个循环的操作,只希望提前结束本次循环,而接着执行下次循环,这时可以用continue语句。 break语可和continue语句的区别: continue语句只结束本次循环,而不是终止整个循环的执行。 break语句结束整个循环过程,不再
XG.孤梦
2022/02/28
1.9K0
C语言循环结构与循环嵌套-学习十
VBA程序控制结构示例-九九乘法表
大家周末好,本节将以制作九九乘法表为例,来巩固循环结构和判断结构的嵌套应用。下面先演示下最后的效果。
无言之月
2019/10/13
1.4K0
循环语句For each...next语句
大家好,前面已经介绍过循环结构的for..next和do...loop系列语句。还有一种用于处理对象集合的循环语句,即for each...next语句,在本节介绍。(下面程序控制结构图帮助回顾)
无言之月
2019/10/13
2.3K0
VBA掌握循环结构,包你效率提高500倍
这是系列免费教程《Excel VBA:办公自动化》,还是老规矩,看看我们走到哪里了。
猴子数据分析
2023/10/31
4740
VBA掌握循环结构,包你效率提高500倍
VBA程序控制结构概述
大家好,本节的主要内容是简单介绍下VBA编程中的基本程序控制结构,然后用其中一种结构的语句来简单举例,目的是让大家先对控制结构有整体的印象,然后引出变量和对象两个概念。
无言之月
2019/10/13
1.8K0
while、do...while、嵌套循环复习
        首先进行循环条件判断,如果为 true,则执行{ }里的语句,如果为 false,则直接执行while后的语句,不进入循环体。
zxmttkx
2022/12/02
1.4K0
while、do...while、嵌套循环复习
Excel之VBA简单宏编程
excel是一款很经典的数据分析的工具,里面包含了很多内置函数,但实际情况有时却复杂得多,而excel的宏编程提供了自定义函数的功能,正好有老师需要帮忙做一些数据分析,就学习了一下,下面是我的学习笔记。本人使用的是excel2013。有出入的地方可以参考。
全栈程序员站长
2022/07/01
4K0
Excel之VBA简单宏编程
Excel VBA项目实战
前面的《Excel VBA:办公自动化》和大家分享了VBA常用的基础知识,就有同学留言问我:猴子老师,能不能出一个项目实战案例,可以把前面的知识都应用起来。
猴子数据分析
2021/04/15
2K1
VBA中重要的强制申明,谁看谁明白
前几次的VBA分享,在留言区收到了很多同学的实际需求。大家的支持,是我们持续分享的动力。
猴子数据分析
2020/09/28
1.7K0
Excel VBA编程
在Excel中,数据只有文本,数值,日期值,逻辑值和错误值五种类型。但是在VBA中,数据类型跟Excel不完全相同。根据数据的特点,VBA将数据分为布尔型(boolean),字节型(byte),整数型(integer),单精度浮点型(single),双精度浮点型(double),货币型(currency),小数型(decimal),字符串型(string),日期型(date),对象型等等
全栈程序员站长
2022/08/11
48.3K0
Excel VBA编程
这些掌握了,你才敢说自己懂VBA
于是,我准备把Excel VBA写成一个系列免费教程,撸完这个系列你也是VBA界的黑山老妖了。
猴子数据分析
2020/09/09
4.2K0
循环结构For...Next语句
循环结构类似于汽车发动机,它利用计算机的运算能力,重复执行一段代码,从而完成大量有规则的重复运算,其中的for...next语句是以指定次数来重复执行的循环体。
无言之月
2019/10/13
2.1K0
相关推荐
VBA循环结构没过瘾,那就再来一篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档