打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
文科生自学VBA-循环类型总结和VBA中的VLookup

--人生不是赛场,梦想不容退场,学习编程成就更好的自己--

微软公司Office软件在商业办公领域一直占据着主流和主导地位,其中Excel在数据处理和分析领域有着强大的影响力,大部分人在经历几年职场历练后可以熟练的使用Excel函数透视表功能,基本可以轻松完成绝大多数工作和任务。但实际上Office的强大和独特之处还在于VBA,因为VBA能够胜任好多个性化二次开发,减少重复机械劳动从而实现办公自动化,开发效率高且开发周期短,尤其对于Excel重度使用者来说会了VBA简直就是如虎添翼啊!!!

今天主要介绍两个VBA基础知识点:主要循环类型总结VBA使用VLookup函数循环遍历是编程思维的核心,VBA世界里有几种循环遍历类型,主要包括了For Next, Do While/Until和For Each Next,每个方式都有自己的语法特点和使用规则,大家根据实际情况进行合理选择;在Excel世界里VLookup函数占据着非常重要的地位,能够解决多表不同字段关联匹配的问题,几乎是Excel高手必须掌握的技能,如何在VBA里调用VLookup函数会在后半部分提及,下面开始正文。

首先看下面两个Sheet表数据情况:

DATA表如下:

INFO表如下:

循环总结部分:

根据INFO表中年龄界定范围来逐一判断DATA中每个人的人生阶段情况

第一种循环总结-For Next

第二种循环总结-Do While Loop

第三种循环总结-Do Until Loop

第四种循环总结-For Each Next

在VBA中调用VLookup:

根据INFO表中ID爱好情况来逐一匹配DATA中每个人的爱好情况

关键点一定使用Application.VLookup才可以调用成功,参数设置都是跟函数VLookup一样,是不是一点也不难哦?

代码汇总如下:

Sub Judge_Age_Period_Next() '利用For Next循环进行判断Application.ScreenUpdating = FalseSheets('DATA').SelectDim i As Long, lr As Long '定义两个长整数型数值lr = ActiveSheet.UsedRange.Rows.Count '获取当前工作表的最大行数For i = 2 To lr Step 1 '以步长为1的方式向下遍历循环判断 If Range('D' & i) <= 3 Then Range('E' & i) = '婴儿' ElseIf Range('D' & i) <= 18 Then Range('E' & i) = '少年' ElseIf Range('D' & i) <= 35 Then Range('E' & i) = '青年' ElseIf Range('D' & i) <= 50 Then Range('E' & i) = '中年' Else: Range('E' & i) = '老年' End IfNext iApplication.ScreenUpdating = TrueEnd SubSub Judge_Age_Period_While() '利用While Loop循环进行判断Application.ScreenUpdating = FalseSheets('DATA').SelectDim i As Long '定义一个长整数型数值i = 2 '定义起始点数值Do While Range('D' & i) <> '' '定义何种情况执行循环 If Range('D' & i) <= 3 Then Range('F' & i) = '婴儿' ElseIf Range('D' & i) <= 18 Then Range('F' & i) = '少年' ElseIf Range('D' & i) <= 35 Then Range('F' & i) = '青年' ElseIf Range('D' & i) <= 50 Then Range('F' & i) = '中年' Else: Range('F' & i) = '老年' End Ifi = i + 1 '定义步长向下循环遍历LoopApplication.ScreenUpdating = TrueEnd SubSub Judge_Age_Period_Until() '利用Until Loop循环进行判断Application.ScreenUpdating = FalseSheets('DATA').SelectDim i As Long '定义一个长整数型数值i = 2 '定义起始点数值Do Until Range('D' & i) = '' '定义何种情况执行循环 If Range('D' & i) <= 3 Then Range('G' & i) = '婴儿' ElseIf Range('D' & i) <= 18 Then Range('G' & i) = '少年' ElseIf Range('D' & i) <= 35 Then Range('G' & i) = '青年' ElseIf Range('D' & i) <= 50 Then Range('G' & i) = '中年' Else: Range('G' & i) = '老年' End Ifi = i + 1 '定义步长向下循环遍历LoopApplication.ScreenUpdating = TrueEnd SubSub Judge_Age_Period_Each() '利用Each Next循环进行判断Application.ScreenUpdating = FalseSheets('DATA').SelectDim i As Long, rng As Range '定义一个长整数型数值和Range对象i = 2 '定义起始点数值For Each rng In Range('H2:H12') '定义循环范围 If Range('D' & i) <= 3 Then Range('H' & i) = '婴儿' ElseIf Range('D' & i) <= 18 Then Range('H' & i) = '少年' ElseIf Range('D' & i) <= 35 Then Range('H' & i) = '青年' ElseIf Range('D' & i) <= 50 Then Range('H' & i) = '中年' Else: Range('H' & i) = '老年' End Ifi = i + 1 '定义步长向下循环遍历NextApplication.ScreenUpdating = TrueEnd SubSub Find_Match_VLP() '利用Vlookup匹配数据Application.ScreenUpdating = FalseSheets('DATA').SelectDim i As Long, lr As Long '定义两个长整数型数值lr = ActiveSheet.UsedRange.Rows.Count '获取当前工作表的最大行数For i = 2 To lr Step 1 '以步长为1的方式向下遍历循环判断 '通过Vlookup进行匹配数据 Range('I' & i) = Application.VLookup(Range('A' & i), Worksheets('INFO').Range('D:E'), 2, 0)Next iApplication.ScreenUpdating = TrueEnd Sub

VBA其实并不难,只要肯下点功夫就可以熟练掌握和运用,大家赶紧试一试吧!!!

END

我为人人,人人为我!!欢迎大家关注,点赞和转发!!!

~~人生不是赛场,梦想不容退场~~不断努力学习蜕变出一个更好的自己,不断分享学习路上的收获和感悟帮助他人成就自己!!!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
excle vba 编排乘车表
Word文档内所有的空段落,VBA代码瞬间帮你全部删除
VBA 反选
简化及提高VBA运行速度的方法
Word删除空行的VBA
用Excel必学VBA,不学绝对后悔
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服