EXCEL VBA 常见字典用法集锦及代码详解(全)_第1页
EXCEL VBA 常见字典用法集锦及代码详解(全)_第2页
EXCEL VBA 常见字典用法集锦及代码详解(全)_第3页
EXCEL VBA 常见字典用法集锦及代码详解(全)_第4页
EXCEL VBA 常见字典用法集锦及代码详解(全)_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 NextRange(a3:k&n).Borders.LineStyle=1Application.DisplayAlerts=TrueApplication.ScreenUpdating=TrueEndSub三、代码详解1、Dimd(1To3)AsNewdictionary:本例是前期绑定的,先引用了脚本运行时库,声明了3个元素的数组为新字典。2、x=Arr(i,2):把生产型号赋给变量x(1)。3、d(x(1)=d(x(1)+Arr(i,3):把相同生产型号和它的生产数量加入字典d(1),达到汇总的目的。4、x=Arr(i,2)&|&Arr(i,4):把生产型号和返修原因连起来赋给变量x(

2、2)。5、d(x(2)=d(2)(x(2)+Arr(i,5):把相同生产型号和相同返修原因的返修数量加入字典d(2),达到汇总的目的。6、x=Arr(i,2)&|&Arr(i,4)&|&Arr(i,6):把生产型号和返修原因和报废原因连起来赋给变量x(3)。7、d(x(3)=d(x(3)+Arr(i,7):把相同生产型号和相同返修原因和相同报废原因的报废数量加入字典d(3),达到汇总的目的。8、Fori=1To3:用一个循环运用字典的keys方法和items方法把3个字典的关键字和它们的项赋给对应的变量。9、Sheet4.Activate:激活表4。10、a3:k1000.ClearConte

3、nts:清空A3:K1000单元格区域。11、a3:k1000.UnMerge:将该区域所有的合并单元格分解为独立的单元格。12、a3:k1000.Borders.LineStyle=xlNone:去除该区域所有的单元格边框。13、i3.Resize(d(3).Count,1)=Application.Transpose(t(3):把报废数量汇总值的一维数组转置后赋给I3开始的单元格区域。14、n=2:把2赋给变量n。因为循环中要用到n=n+1,而汇总表的起始行是第3行,所以把n的初值定为2。15、Fori=0ToUBound(k(3):在字典d(3)中逐一循环。16、aa=Split化(i)

4、,T):VBA函数Split在第6例已经讲过了。把字典d(3)的关键字分解后赋给变量aa。17、n=n+1:在循环中每循环一次行数就加1。18、Cells(n,2)=aa(0):把aa数组的第1个元素aa(0),即生产型号,赋给对应的单元格;下面两句分别把aa数组的第2个元素aa(1),即返修原因,赋给对应的单元格;把aa数组的第3个元素aa(2),即报废原因,赋给对应的单元格。19、Fori=3Ton:从第3行开始逐行循环。20、Forj=0ToUBound(k(1):在一维数组k(1)中循环。21、IfCells(i,2)=k(j)Then:如果生产型号等于字典d(1)的关键字时执行下面的

5、语句。22、ceiis(i,3)=t(j):把这个生产型号的生产数量赋给C列单元格。23、Cells(i,10)=Cells(i,9)/Cells(i,3):把报废数量除以生产数量得到的报废率赋给J列单元格。24、Cells(i,11)=Cells(i,10):ExitFor:把报废率赋给K列单元格。退出Forj的循环。25、Forj=0ToUBound化(2):在一维数组k(2)中循环。26、IfCells(i,2)&|&Cells(i,4)=k(2)(j)Then:如果把生产型号和返修原因连起来的值等于字典d(2)的一个关键字时,执行下面的代码。27、Cells(i,5)=t(2)(j):

6、把相同生产型号和相同返修原因的返修数量赋给E列单元格。28、Cells(i,6)=Cells(i,5)/Cells(i,3):把返修数量除以生产数量得到的返修率赋给F列单元格。29、Cells(i,7)=Cells(i,6):ExitFor:把返修率赋给G列单元格。退出Forj的循环。30、Range(a3:k&n).SortKey1:=Range(b3),Order1:=xlAscending,Key2:=Range(d3),Order2:=xlAscending,Key3:=Range(h3),Order3:=xlAscending,Header:=xlGuess:本句开始给表格数据设置格

7、式了。本句是对A3开始的单元格区域按B3_升序、D3_升序、H3升序排序。31、Fori=3Ton:从第3行开始逐行循环。32、IfCells(i,2)Cells(i-1,2)Then:如果B列单元格的值与上一行单元格不相等则执行下面的代码。33、r=r+1:变量r加1以后赋给r。34、ReDimPreserveArr1(1Tor):重新声明动态数组的大小。Preserve是ReDim语句的关键字,当改变原有数组最末维的大小时,使用此关键字可以保持数组中原来的数据。35、Arr1(r)=i:把单元格所在的行数赋给数组。经过这轮循环就得到了各个生产型号的第一行的行数。也得到了生产型号的总数为r个

8、。36、Application.DisplayAlerts=False:把显示警告设置为关闭,因为下面要合并单元格,Excel会显示一个警告对话框来打断代码的运行,所以先关闭此功能。37、Forj=1Tor:在所有的生产型号中逐一循环。38、r3=0:r2=0:把两个变量设置为零。39、IfjrThen:如果j不等于最后一个生产型号时,执行下面的代码。40、js=Arr1(j+1)-1:把下一个生产型号开始行的上面一行的行数赋给js。41、否则把最后一行的行数n赋给js变量。42、ks=Arr1(j):把生产型号的开始行的行数赋给变量ks。43、Ifjs一ks+11Then:如果结束行减去开始

9、行再加1的值大于1,就说明这个型号有多行需要合并,执行下面的代码。44、Cells(ks,1).Resize(js-ks+1,1).Merge:A列对应的单兀格合并;下面B列和C列相应的单元格也合并。45、Cells(ks,1)=j:A列依次填入序号。46、Forii=ksTojs:从开始行到结束行逐一循环。47、Ifii=ksThen:这个循环是为了求得D列返修原因是否有需要合并的单元格,如果ii=ks即是同一个生产型号中第一个返修原因的时候,把行数赋给动态数组,否则如果不等于上一行D列单元格的值时,把行数赋给动态数组的下一个元素。经过这轮循环就得到了这个生产型号每一个返修原因的第一行的行数

10、。也得到了返修原因的总数为r2个。48、Forii=1Tor2:在这个循环中,把D歹U、E列F列相同的返修原因单元格合并,也汇总了G列的总返修率。49、Cells(ks,7).Resize(js-ks+1,1).Merge:把G列的总返修率单元格区域合并。50、Forii=ksTojs:从开始行到结束行逐一循环。这个循环是为了求得H列报废原因是否有需要合并的单元格,经过这轮循环就得到了这个生产型号每一个报废原因的第一行的行数。也得到了报废原因的总数为3个。51、Forii=1Tor3:在这个循环中,把H歹U、I列J列相同的报废原因、报废数量和报废率单元格合并,也汇总了K列的总报废率。52、Range(a3:k&n).Borders.LineStyle=1:把A3开始的单元格区域设置边框。53、Application.DisplayAlerts=True:开启程序显示警告。54、Application.ScreenUpdating=True:开启屏幕更新。代码执行后如图实例12-2所示。图实例12-2示例常见字典用法实例集锦到此告一段落了。字典就象一个二维数组Ar

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论