菜鸟也懂VBA-excle2007VBA入门教程(17)
Excel 2007 VBA 教程
arr1(x, 5) = Join(arr2, \因为数组arr(x,5)是空的,所以又把用Join处理过的arr2数组里的数据又写进arr1(x,5)里
Erase arr2 '清除数据arr2,目的是为了装后面的数据 Next x '
[E1].Resize(Maxrow, 1) = Application.WorksheetFunction.Index(arr1, 0, 5) '利用Index函数又把数据读出来放在单元格E列
'这里有个要注意,那天我问了“守柔”版主,他也是在实践中发现了这个问题,引用的工作表里的数据用Index处理在VBA里不能超过
' 65536行,这个我现在也是卡着的,如果有知道的,可以指导一下,谢谢。 Columns(5).AutoFit 'E列自动适合列宽
MsgBox \用时\秒\显示程序运行用时 End Sub
6. 把A列的内容逗号进行分列
Sub test1() '可能有的学生会说,老鼠老师真傻,这个不是可能用分列实现吗,呵呵,我这里主要是为了讲Split
Dim Myrow As Long, i As Long, arr1, arr2, t As Single '定义相关的变量 t = Timer '开始记时
maxrow = Cells(Rows.Count, 1).End(xlUp).Row '取得A列最后一个有数据的单元格的行号 arr1 = Range(\把区域赋给数组arr1 For i = 1 To maxrow '遍历数组arr1的一维
arr2 = Split(arr1(i, 1), \,\按逗号分开,全部赋值给数组arr2
Cells(i, 2).Resize(1, UBound(arr2) + 1) = (arr2) '把数组arr2一次性赋值给相应的单元格
Erase arr2 '清除数组 arr2 Next i
Columns(\自动适合列宽
MsgBox \用时\秒\显示程序运行的时 End Sub
Sub test2() '
Range(\
Columns(\End Sub
Sub test3() '优化代码
Dim Myrow As Long, i As Long, arr1, arr2, arr3(1 To 20000, 1 To 8), t As Single, k As Long '定义相关的变量
t = Timer ''开始记时
maxrow = Cells(Rows.Count, 1).End(xlUp).Row '取得A列最后一个有数据的单元格的行号 arr1 = Range(\把区域赋给数组arr1 For i = 1 To maxrow '遍历数组arr1的一维
arr2 = Split(arr1(i, 1), \,\按逗号分开,全部赋值给数组arr2 For k = 0 To UBound(arr2) '遍历数组arr2的成员
arr3(i, k + 1) = arr2(k) '把数组arr2装进一个新的数组Arr3,这里要注意为什么要arr3(i, k + 1)
'因为你的k初始值是0,而你定义arr3(1 To 20000, 1 To 8)的最小下标是从1开始的,所以要加1
Next k '
第 43 页 共 52 页
Excel 2007 VBA 教程
Erase arr2 '清除数组arr2 Next i
Range(\把数组arr3一次性与于单元格区域 Columns(\自动适合列宽
MsgBox \用时\秒\显示程序运行的时 End Sub 7. vlookup
(1). 实例 根据A列的姓名依次显示出它们的底薪
Sub test()
Dim Maxrow As Long, arr, arr1, arr2, arr3 '定义相关的变量
Maxrow = Cells(Rows.Count, 1).End(xlUp).Row '取得A列最后一个有数据的单元格行号 arr3 = Array(\小老鼠\代晓蓉\张三\李诗诗\李飞\马丽\把要查找的数据赋值给数组arr3
arr = Range(\把单元格区域赋值给数组arr
arr1 = Application.WorksheetFunction.VLookup(arr3, arr, 3, 0) ' 利用Vlookup函数查找后得到一个新的数组arr1
'大家要注意,在VBA里,一般情况在工作表它的参数可以用数组,那么在VBA也可以用数组,所以Vlookup第一个参数我放了数组arr3进去了
For i = 1 To UBound(arr1) '和用循环语句把查找的结果用显示函数Msgbox显示出来 MsgBox arr3(i - 1) & \的底薪是\ Next i End Sub
8. 同样的方法我们可以用这几个函数来实现其它的,这里我就不多说了,同学们可以自己去尝试一下。
sumif,small,large,match
二. 实例 查找不及格记录 Sub test()
Dim Maxrow As Long, arr1, arr2(), i As Long, x As Long '定义相关的变量
Maxrow = Cells(Rows.Count, 1).End(xlUp).Row '取得A列最后一个数据的单元格行号 arr1 = Range(\把区域数据装入数组arr1中
For i = 1 To UBound(arr1, 1) '遍历数组arr1中的一维,相当于工作表中的行数 If arr1(i, 4) < 60 Then '如果arr1的值小于60,那么 x = x + 1 '累加x ,起到记数器的作用
ReDim Preserve arr2(1 To 4, 1 To x) '重新定义动态数组arr2,为什么这样定义呢,因为二维动态数组只能更改二维,不能更改一维
'所以把行和列选互换一下,这样就可以把数组arr1中符合条件的装过数组arr2中,处理完后再通过转置函数又要把行和列换回来
arr2(1, x) = arr1(i, 1) ' arr2(2, x) = arr1(i, 2) ' arr2(3, x) = arr1(i, 3) ' arr2(4, x) = arr1(i, 4) ' End If ' Next i
[F1:I1] = Array(\学号\姓名\性别\成绩\把标题写在单元格区域F1:I1
[F2].Resize(UBound(arr2, 2), 4) = Application.WorksheetFunction.Transpose(arr2) '把数组arr2成员一次性写于单元格区域 '不过这里一定要注意,满足要求的,也就是说不及格的人数,是用UBound(arr2, 2),不是Bound(arr2, 1)
第 44 页 共 52 页
Excel 2007 VBA 教程
'如果是用1,arr2数组的一维的上界是4,重新定义数组已经申明了,所以是用2,数组arr2二维的上界才是不及格的人数 End Sub
第十五讲 字典基础知识(一)
一. 申明(大家不要以为佛山小老鼠是用字典高手,我也还是菜鸟,呵可,记住,不要拿字典来考我,我是把学
字典的一点心得分享,希望能帮到比我还菜的VBA 爱好者。)
二. 开头白:字典,早一年,我刚按触VBA的时候,看到别人写的一些代码怎么也看不懂,后来听别人说,一是
Vba里的数组,还有就是字典,这两个知识点可以优化代码和提高代码的运行速度,于是,我也蠢蠢欲动,可以怎么也不明白。于是放弃了学习VBA,因为自己会写代码,也是一些简单的录制宏,修改宏,最多也只能用上循环语句。很羡慕VBA高手写的那些长长的代码,那天我的水平有这么高就好了,然后我到ExcelHome论坛上找了这方面的资料,如“山菊花老师的墙上那一串串红辣椒——数组入门讲座”,“蓝桥玄霜老师:常见字典用法集锦及代码详解”,以及“蓝色幻想”老师的一些视频和贴子,真的很感谢这些老师,总算把我这个菜鸟带入了门
1. 字典的引用方式
(1). 前期绑定:方法——>>Alt+F11——>>工具菜单——>>引用——>>浏览——>>选择scrrun.dll。如图
26
a. 优点:对于刚学习字典的朋友好,可以弹出成员列表出来。
b. 缺点:把文件发给别人,别人如果不引用下面这个动态Dll文件就不能用这段代码
图 26
(2). 后期绑定 要用代码实现
方法
Set dic= CreateObject(\
a. 优点:可以发给别人使用,不要担心不能用了 b. 缺点:不利用编程人员编辑代码
(3). 备注:有时可能还是用不了, …… 此处隐藏:1523字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [基础教育]2016-2022年中国钢芯铝绞线市场现状调
- [基础教育]语文部编版初一语文下册练习题 句式变
- [基础教育]南京继续教育参考答案--深入学习贯彻习
- [基础教育]国旗下讲话稿——珍惜时间好读书
- [基础教育]北师大版六年级数学下册圆锥的体积教学
- [基础教育]人教版-音乐-四年级下册-四年级下册音
- [基础教育]乔布斯2019年斯坦福大学毕业典礼致辞.d
- [基础教育]2015年加油站安全知识竞赛试题及答案
- [基础教育]2020年教师年度考核个人工作总结
- [基础教育]2019年中考历史试题-2019年大庆市初中
- [基础教育]初三仁爱英语第一轮总复习教案
- [基础教育]SG-A094电气配管安装工程隐蔽验收记录
- [基础教育]冀教版小学数学三年级下册第六单元教材
- [基础教育]青岛版(五制)小学科学二年级下册16《制
- [基础教育]2018-2019年初中科学初一中考真卷测试
- [基础教育]幼儿园大班期末简短评语精选
- [基础教育]2018云南临沧公务员考试申论技巧:这样
- [基础教育]学校食堂经营管理方案
- [基础教育]新中国砥砺奋进的七十年原文
- [基础教育]真空泵的选型及常用计算公式
- 高职田径课程教学现状与对策
- 全髋关节置换术在老年股骨颈骨折患者中
- 青人社厅函〔2016〕576号(附件)工资
- cp101-07砂子检验作业指导书 - secret
- 微观经济学 第八章 博弈论 习题
- 2014高考真题(词语运用)汇编及答案
- 2018年人教版七年级语文下册《第三单元
- 苏教版数学四年级上册第一单元试题 - M
- 四川大学新闻与传播考研2000-2010年真
- 浙江万里学院英语专业四年制本科教学计
- 最新2018马年事业祝福语-范文word版(2
- 最全模具行业术语英文翻译
- 皮亚杰的发展心理学理论
- 64篇高考情景式默写 练习题及答案
- 仿写(学生稿)
- 《SQL Server数据库技术》试卷A
- 第七章作业答案
- 江苏省赣榆县海头高级中学高中语文必修
- 浙江省2001年10月自考正常人体解剖学答
- 2012英语重点短语




