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

2020-10-16  本文已影响0人  猴子数据分析

上一节分享后,有同学私信和我说:猴子,上次说的“For循环结构”让程序自动化运行,确实提高了我的工作效率,但能不能够让程序更加智能一些?

看到这位同学的私信又一个《肖申克救赎》的天台式微笑,悄悄上扬在我的嘴角。

今天我们就来学习《Excel VBA:办公自动化》教程的第6节,介绍分支结构。

1.认识VBA:什么是VBA?

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

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

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

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

1.基础版分支结构

案例:根据单元格的分类方法,判断左侧的各位富豪应该获得什么富豪尊称?

我们首先依据「分类方法1」看上述富豪的尊称

通过观察可以发现,分类方法1中只包含2个层级,而各个层级的判断标准依据身价的数值大小。

看到这里,具有职业敏感度的我们肯定会将上述翻译为下面的中文。

那么,同学可能就问了:思路已经很清晰了,可是怎样让这个思路变为VBA代码执行呢?

没错,这就需要用到新知识点「IF分支结构语句」

从上图我们可以看到,「IF分支结构语句」主要由3部分组成:

(1)分支1

其标准的书写格式是「IF xxx then」,意思是:如果(if)符合判断的条件xxx, 那么(then)

(2)分支内容

分支内容就是符合判断条件后,需要执行的语句

(3)分支2

标准写法是「Else」,意思是:不符合分支1,判断是否符合分支2

(4)分支结束

其标准的书写格式是「End IF」,意思是:IF语句结束,跳出结构,执行下一句。

那么套用到上述的案例中,我们以判断「第1行王兴」为例:

接下来,我们拆解一下上述代码并还原思路:

(1)首行输入「Option Explicit」

这句话表示告诉VBA:注意了,我要开始使用强制申明了(上一讲的知识点,忘记可以回顾)。

(2)输入「Sub 富豪判断()」,系统会自动将尾部的「End Sub」写出

这句话表示告诉VBA:我写了一个名称为「富豪判断」的宏。

(3)定义1个变量「Dim money」

这句话表示告诉VBA:我们定义了1个变量「money」

(4)赋值语句「money = Cells(3, 3)」

这句话表示告诉VBA:我把「单元格C3」的值赋给了「变量money」,也就是下面的“王兴”。

(5)分支结构语句

这一部分表示告诉VBA:如果「变量money」也就是「单元格C3」的值,如果大于1000,那么「单元格D3」的值将是「超级富豪」;否则,「单元格D3」的值就是「富豪」。

写完上述代码后,我们运行后看结果

很明显,上述的程序达到了我们的预期结果,但是聪明的同学可能又提出了想法:猴子,你这就才2个层级,比较容易实现,如果我有很多个层级,向俄罗斯套娃那样,那又如何实现呢?

不用说,又一个天台式微笑上扬嘴角。那我们就有必要升级一下我们的分支结构了。

2.升级版分支结构

其实,对于上述同学提出的多个层级的分支结构,也仅需要加2行代码即可实现。

我们依据「分类方法2」看上述富豪的尊称

这时候我们发现,代码思路还是原来的思路,就仅仅是层级变多了而已,那么根据这道题,我们仅简单修改下就好。

我们可以看到,我们在代码汇总增加了几句「ElseIf xxx」,表示的意思是「否则如果」,即:如果上面的条件不符合,那么接着往下判断就行了。其主要的语法如下面

上图仅展示了3级分支,如果大家实际工作汇总还有更多的判断条件,那么自己可以根据实际情况相应添加即可。

3.关系运算

在上述的代码过程中,大家可能没有注意,我们用到了「身价在0-1000」之间这样的描述。

这样的描述一般表示为二者之间的大小关系,比如数学上我们熟悉的「大于 等于 小于」,在VBA中也存在各个变量、数值之间的比较,专业术语称作「关系运算符」。

而我们在VBA中常用的「关系运算符」主要有以下4种:

大于(>),小于(<),等于(=) ,不等大于(<< span="">>)

4.总结

好了,我们总结一下今天的内容

(1)用好分支结构,程序更智能

(2)关系运算符组合分支结构,威力巨大

经常使用的有:大于(>),小于(<),等于(=) ,不等大于(<< span="">>)

5.思考题

我们在案例中仅仅以「第1行王兴」进行了判断,那么结合上次分享的内容,我们如何利用「For循环结构」和「If分支结构」实现一键自动判断所有富豪的尊称呢?

欢迎在留言区写下你的答案。

推荐:人工智能时代的必学技能

上一篇下一篇

猜你喜欢

热点阅读