作者:金人瑞 《Excel VBA175例无理论纯实战教程》学员

最近正在学习郑广学老师的VBA 175例教程,这是一篇新手向的文章,也是一个新手的总结,高手可以批评文章中的不足之处,也可以无视,VBA中的IF判断, 判断一般起到控制作用,如郑老师所说,就像一个水管中的控制阀,水来了,一个个的控制阀决定着流水的走向。而整个流程中判断也的确有着控制流程走向的作用,可以说循环,判断,数组是vba的三驾马车,绝大部分的问题都是他们仨来解决的。其中for循环和if是新手最先学到的东西,今天我就来分享一下我这个新手在安装"阀门"的时候遇到过的坑。

提到判断,首先不得不提的就是IF函数,通常情况下IF有四中写法

第一种, 开关型单句

如下图:这是一个单句, 这是我自己取得名字,为了好理解,我们给他们取个外号"限定阀",在满足某个条件时启动执行某些语句.这样写的好处是加上备注以后一目了然,一看就知道有一个"阀门",不过这是我的个人习惯,在其他情况下,建议使用下面的方法.

第二种,开关型

这还是我自己取得名字,为了好理解,我们依旧给他们取个外号,"球阀",达到某条件就执行某个操作,就像水管里面的球阀,只有开关两种情况,控制上也只能是执行和不执行的区别作用同第一种一样,只不过多了一个end if ,可以将多个满足则执行的语句包起来批量控制.

第三种,分流型

老规矩整个名字:分流控制阀,如下,可以看到if整句起到了控制流程走向的作用.

执行后如下:

第四种:多层控制型

如下图,这种结构足够完整,能控制不同条件的"水流"流向多个方向.在这里就不演示and和or了

为什么我会说他有坑呢?因为在一段程序中我们会时常遇到一个问题到底是用if包一个if,还是用if连接一个if以及判断的位置问题.

先看个例子:

这是代码和执行结果,在do/loop循环中,while i> 2 是判断条件,判定符合条件则执行.下列语句,在上述代码中I = I +1 执行以后I = 2 ,符合while >-=2,所以代码可以得到右侧结果,但是如果写成下方这样,则不执行,因为在I = i+1执行前就已经经过了while判断,此时i=1,不符合.所以无结果

由上可以得到一个结论,判断语句放置的地方一定要考究否则就会出bug,有些需要执行的语句就不执行.所以if作为常用判断语句,其放置的地方一定是要符合逻辑下面总结一下我见过的两种形式,更多复杂的样式大家可自行拓展.这里只做模型.

(1) If /end if---if/end if 连接型

一般情况下,两个判断是独立的时候才需要写两个if,

如上,我需要删除考试没写名字的考生,也要选出语文为70分以上的考生标记为黄色,那么我就需要做两个if语段,代码如下

结果如下:

这个就是典型的两个独立的if在for循环中的应用,值得注意的是这两个if在程序中是都会被执行的.但是下面这种情况就不一样了,第一个if会被执行,但是第二个就不一定了,

(2) If –if/end if – end if ,第二种,if包含if

依旧是上面的例子,在找到语文为70分以上的学生以后,我希望在语文70分以上的颜色由黄色改为红色,同时数学60分以上语文70分一下的底色改成黄色.代码如下

执行结果如下

我们可以通过执行结果看到判断数学大学60分这个判断其实是被语文大于70分这个判断"阉割"过的结果.这就是if包if 的模型.

总结一下:if连if,两个判断是独立的.if包if两个判断不独立,外层的if控制里层的if.第一种连接型的适用范围是需要做两个判断,且所需要执行的代码语句不一样,比如删除和上色.不同的判定条件有不同的语句执行.第二种包裹型if,适用范围是两层判断,先筛选出来的数据要再次筛选,如果判定成功需要执行的语句一样,比如都是底色上红色,那么些一个and连接语句同时满足即可,但是执行想语句不一样,则需要写成包裹型.

补充一点:学vba时间不长,所幸认识郑老师不算太晚,见过的大神多,他们的特点就是理解能力强,思路清晰,作为新手我觉得注释很重要,一来写代码的设计思路,二来写语句的作用,这些都至关重要,再一个就是建立自己的理解模型就像上面的if,代码的设计其实是有模型思维的,任何事物借助模型都可以快速的去理解,通过修改模型,引用模块,即使很复杂的代码我们也能很快的完成。

最后给大家看看郑老师的无敌IF多层程序框图

.最后说一点学习历程

一开始也是找各种免费课,速成课,看完速成课的最大结果其实是他给的案例你会,你自己的案例不会,还不容易百度到了吧,黄花菜都老了,这不是VBA应该有的效率,我要的是高效率,不仅快捷还要方便。于是我在QQ阅读买了书,又买了纸质书!加了群,可还是那样,书里面只带你入门,他写的很多我都会,不会的也看不懂,场面一度极其尴尬。究竟什么是提高?究竟如何才能提高?这两个问题直到我在b站看到了郑老师我才反应过来,真正的高手是能在一瞬间就有思路怎样去处理数据,也能在很短的时间里面调用写好的模块。这才是真正的高效率。这也恰恰是这么长时间我在其他课程里面没听到的东西,虽然前面走了很多弯路,不过这一个月来我每天上厕所都要看老师的视频,VBA水平突飞猛进,学习上瘾的这种感觉,比打游戏上瘾还强烈!!!

shell if多个条件判断_萌新关于Excel VBA中IF条件判断语句的一点心得体会相关推荐

  1. 萌新食用:Verilog中wire和reg数据类型的区别

    萌新食用:Verilog中wire和reg数据类型的区别 最近恰好在学习数电相关知识扯到Verilog中的wire与reg类型数据的区别: 总的来说,其实就一句话:wire相当于物理连线,而reg相当 ...

  2. .net一个函数要用另一个函数的值_【195期】MySQL中的条件判断函数 CASE WHEN、IF、IFNULL你会用吗?...

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...

  3. 中if判断中文_当Excel表格中的条件判断超过8个,用IF函数不容易实现怎么办?...

    点击上方蓝字  免费关注 置顶公众号或设为星标,否则可能收不到文章 个人微信号 | (ID:LiRuiExcel520) 微信服务号 | 跟李锐学Excel(ID:LiRuiExcel) 微信公众号  ...

  4. ctfshow_萌新_萌新隐藏题

    https://harvey-blog.com/Safety/525 0x01 萌新认证 加群召唤flag 0x02 萌新_密码 萌新不会 53316C6B5A6A42684D3256695A4456 ...

  5. vlookup两个条件匹配_用VLOOKUP进行同时满足两个条件的查找,几种方法都在这啦!||Excel技巧...

    之前有个同学在后台留言,询问VLOOKUP查找同时满足两个条件的方法(怎样在Excel表中把手机号码中间4位设为星号(*)?||小站问答:第80期),加油菌的回复是,通过"=VLOOKUP( ...

  6. 组装台式电脑配置清单_萌新攒机必备!多价位台式电脑配置清单!

    首先需要声明的是,配置单仅做参考,为了给一些攒机萌新提供可以对比的选择,没有绝对完美的配置,都要根据需求和预算进行取舍.不同人对于品牌也有不同程度的偏好,可能因为之前用过类似的产品得到了糟糕的体验,从 ...

  7. 声卡loopback有什么用_萌新做音乐那点事 | 外置专业声卡的选择方法与推荐

    [本文长期更新,感兴趣可以点收藏] 前言:作为一名独立音乐人,接触了这么多年,自认为了解一点声卡的常识,为正在准备购买声卡[或是音频接口]的萌新音乐人做一篇介绍文. 市面常见的声卡品牌 常见的品牌真的 ...

  8. asp.net怎么实现按条件查询_用这个提取函数王中王,制作数据查询表

    当Excel表的数据太多时,需要进行数据的查询与提取,往往要使用查找与引用函数.提取条件简单还好说,一复杂起来,就要使用又长又头疼的嵌套函数,不要说用了,光看懂函数都要死一片脑细胞. 别伤脑筋了,为什 ...

  9. layui table 每列加标签_【前端】layui表格中根据条件给对应的列加背景色

    [前端]layui表格中根据条件给对应的列加背景色 [前端]layui表格中根据条件给对应的列加背景色 1.效果(根据条件动态给表格加背景色) 2.代码: 在我自己的项目中,由于条件比较多,提取出了一 ...

最新文章

  1. 《Unit Testing》2.1 经典学派如何做测试隔离
  2. python找不到文件数据_如何用 Python 正确读取资源文件
  3. Flash在浏览器里调试获取trace
  4. @程序员,这门编程语言不输 C/C++!
  5. mysql编码方式查看_Mysql必读查看mysql编码方式 mysql数据库编码查看方法
  6. 全面升级,淘宝/天猫api接口大全
  7. 体验SubSonic
  8. JavaSE、JavaEE、JavaME之间的区别
  9. 软件单元测试方法,单元测试的基本测试方法
  10. ESP8266串口转wifi模块AT指令调试TCP通信
  11. win7升级win10正式版_最新win7如何升级win10操作教程,你还在用win7吗?
  12. Windows CE 桌面UI修改
  13. 【English Training】Green Economy and Trade
  14. 12、RH850 F1 FLASH存储器介绍
  15. 原来装电信宽带送的光猫现在升级到了200M了是否要换个光猫?
  16. 计算机应用期刊主编终审通过率,审稿快的期刊_最容易发表审稿快的学报_审稿快的三本或大专学报...
  17. SSR、SSE、SST、R^2、调整R^2
  18. 更改网络(搬家)后无法访问群晖 网络重置方法
  19. opencv invert()函数使用问题记录
  20. Java中如何正确使用字体编码

热门文章

  1. 随想录(程序员和收入)
  2. 解决报错: No candidates found for method call XXXX (方法没有调用者)
  3. java中ftp文件上传和中文乱码解决
  4. android viewpage预加载和懒加载问题
  5. HTTP协议中request报文请求方法和状态响应码
  6. Docker在Ubuntu16.04上安装
  7. skynet记录6:定时器
  8. chrome用type=file获取图片路径并转base64字符串
  9. Android(java)学习笔记144:网络图片浏览器的实现(ANR)
  10. as3调用外部swf里的类的方法