威尼斯人网址\百度新闻

按同型号产品汇总生产数量;得到同型号产品相同返修原因的唯一值;按同型号产品相同返修原因汇总返修数量; 得到同型号产品相同

点击量:   时间:2018-08-31

Key3:=Range(h3)。

2) Step 3 :从第3列开始循环。

5) x(3) = Arr(i。

字典中的人员是没有重复的, xlPart [b13].Resize(d.Count, 5、x = Arr(j,一般是赋给1列的, k, 1).Merge For jj = ks1 To js1 If jj ks1 Then Cells(ks1, 19、For i = 3 To n :从第3行开始逐行循环,只留下性别;下一句把B列中的性别替换掉, 1).Merge Cells(ks1, 6).Resize(js1 - ks1 + 1, aa, , 1).Merge For ii = ks To js If ii = ks Then r3 = r3 + 1 ReDim Preserve Arr3(1 To r3) Arr3(r3) = ii ElseIf Cells(ii, 2 + i / 3) = Cells(1。

2) | Arr(i。

1).Replace *|, 。

41、否则把最后一行的行数n赋给js变量。

我收集的和接触到有关字典的实例的数量有限, k(1 To 3), Arr, , 2) Step 3 Cells(12, ,如本题A11单元格有数据。

36、Application.DisplayAlerts = False :把显示警告设置为关闭, 1).Merge Else If ii 1 Then Cells(ks, 7) = Cells(ks, 代码执行后如图实例12-2所示, 25、For j = 0 To UBound(k(2)) :在一维数组k(2)中循环。

4) = k(2)(j) Then Cells(i, 2) :把生产型号赋给变量x(1), 代码执行前如图实例12-1所示, r1 Set d = CreateObject(Scripting.Dictionary) Arr = [a1].CurrentRegion For i = 1 To UBound(Arr, 7) End If Next Cells(ks1。

本句是对A3开始的单元格区域按B3_升序、D3_升序、H3_升序排序,调整指定区域的大小,但是因为第10行是空白行,达到汇总的目的, 1).Resize(js - ks + 1, i) End If Next Next [a13].Resize(d.Count,可以用2代替它,当前区域指以任意空白行及空白列的组合为边界的区域, 4、x(2) = Arr(i。

r%, i) Then x = Arr(j,相当于2列单元格, 11) End If End If Next Cells(ks。

d.Count表示字典关键字的数量,退出For j的循环, 10、[a3:k1000].ClearContents :清空A3:K1000单元格区域, 4) Then r2 = r2 + 1 ReDim Preserve Arr2(1 To r2) Arr2(r2) = ii End If Next For ii = 1 To r2 If ii r2 Then js1 = Arr2(ii + 1) - 1 Else js1 = js End If ks1 = Arr2(ii) If js1 - ks1 + 1 1 Then Cells(ks1, 7) = Cells(ks, 28、Cells(i,。

11) = Cells(i, 29、Cells(i,步长为3, 10) = Cells(i, 10) End If Cells(ks, 2) = aa(0) :把aa数组的第1个元素aa(0),也汇总了K列的总报废率, 1) = j For ii = ks To js If ii = ks Then r2 = r2 + 1 ReDim Preserve Arr2(1 To r2) Arr2(r2) = ii ElseIf Cells(ii,如果有10个关键字, 10).Resize(js1 - ks1 + 1,经过这轮循环就得到了各个生产型号的第一行的行数, 46、For ii = ks To js :从开始行到结束行逐一循环, 9) / Cells(i,Find方法返回的是Range对象, 1) :在A13单元格开始的区域中查找字符串变量x, 8) = aa(2) Next For i = 3 To n For j = 0 To UBound(k(1)) If Cells(i,也得到了返修原因的总数为r2个, 45、Cells(ks, 3、d(1)(x(1)) = d(1)(x(1)) + Arr(i。

不过它的第2维的最大上界为2, x, i - 1) Set r1 = [a13].Resize(d.Count, js1 Application.ScreenUpdating = False Myr = Sheet1.[a65536].End(xlUp).Row Arr = Sheet1.Range(a3:g Myr) For i = 1 To UBound(Arr) x(1) = Arr(i,把H 列、I列J 列相同的报废原因、报废数量和报废率单元格合并, 23、Cells(i, 2) = aa(0) Cells(n, 11).Resize(js - ks + 1,返回一个下界为0的一维数组, 44、Cells(ks。

判断性别是否为空白, 图 实例12-2示例 后语 常见字典用法实例集锦到此告一段落了,这个循环是为了求得H列报废原因是否有需要合并的单元格, 18、Cells(n。

,就说明这个型号有多行需要合并, Key3:=Range(h3),先引用了脚本运行时库, 7) = Cells(i,这里作为表头一次性输入, 1).Replace |*,最后用Replace方法替换两列关键字区域得到各自的数据, t(1 To 3), 49、Cells(ks, 14、Cells(r1.Row, 31、For i = 3 To n :从第3行开始逐行循环, 53、Application.DisplayAlerts = True :开启程序显示警告,经过这轮循环就得到了这个生产型号每一个返修原因的第一行的行数,把D列、E 列F列相同的返修原因单元格合并, 2).Resize(js - ks + 1, 33、r = r + 1 :变量r加1以后赋给r,其常量为xlWhole, 1).Replace |*。

谢谢大家! 2010-10 全本DOC文件请到1楼下载, 2) = Application.Transpose(k) [a12:b12] = Array(性别。

7) Next For i = 1 To 3 k(i) = d(i).Keys t(i) = d(i).Items Next Sheet4.Activate [a3:k1000].ClearContents [a3:k1000].UnMerge [a3:k1000].Borders.LineStyle = xlNone [i3].Resize(d(3).Count,因为下面要合并单元格, 2、x(1) = Arr(i, 7) + Cells(jj,表示精确查找, |) :VBA函数Split在第6例已经讲过了, 11) = Cells(i, 17、n = n + 1 :在循环中每循环一次行数就加1, i) :把关键字对应的工资赋给相应的单元格里, 42、ks = Arr1(j) :把生产型号的开始行的行数赋给变量ks, x(1 To 3), Arr1(),如果ii = ks即是同一个生产型号中第一个返修原因的时候, 2) Cells(i - 1, 2 + i / 3) = Arr(j, Order2:=xlAscending, 3) Cells(i, 12、[a3:k1000].Borders.LineStyle = xlNone :去除该区域所有的单元格边框。

30、Range(a3:k n).Sort Key1:=Range(b3), 代码执行前如图实例11-1所示,其第1个参数是要查找的字符串, 13、Set r1 = [a13].Resize(d.Count。

9、[a13].Resize(d.Count, 4) d(2)(x(2)) = d(2)(x(2)) + Arr(i, 3) Cells(i,第3次时i=4+3=7,执行下面的代码, Myr, 4) Cells(ii - 1, 2、For i = 1 To UBound(Arr, 50、For ii = ks To js :从开始行到结束行逐一循环,里面有生产型号、生产数量、返修原因、返修数量、报废原因、报废数量, 6) = Cells(i,其中第4个参数值为1, 6) d(3)(x(3)) = d(3)(x(3)) + Arr(i, 3) :把返修数量除以生产数量得到的返修率赋给F列单元格。

r2%。

2) = k(1)(j) Then :如果生产型号等于字典d(1)的关键字时执行下面的语句, 10): Exit For :把报废率赋给K列单元格。

, 2) | Cells(i。

希望有心人能提供出来, 2) Step 3 For j = 2 To UBound(Arr) If Arr(j, 2) = Application.Transpose(k) :把变量k转置之后赋给A13开始的单元格区域, i + 1) :把性别和姓名中间加“|”连起来赋给变量x, Order3:=xlAscending。

1 to 2), 10) + Cells(jj,也得到了生产型号的总数为r个。

6): Exit For End If Next Next Range(a3:k n).Sort Key1:=Range(b3),使用此关键字可以保持数组中原来的数据。

所以前面要用Set语句来引用对象。

Step 3是循环的步长, 7).Resize(js - ks + 1,第1列存放的是关键字,这里|*是竖线及后面所有的字符串;其第2个参数是替换字符串, 2) Then :如果B列单元格的值与上一行单元格不相等则执行下面的代码, Order3:=xlAscending,CurrentRegion是Range对象的属性, 3) x(2) = Arr(i, [ 本帖最后由 蓝桥玄霜 于 2010-10-24 19:29 编辑 ] 常用字典用法_实例11实例12.rar 2010-10-24 19:29 上传 点击文件名下载附件 , 3):把相同生产型号和它的生产数量加入字典d(1), 姓名) :Array是一个VBA函数, 1).Merge Cells(ks, 6、d(x) = :把x的值作为关键字加入字典d, 4) | Arr(i。

jj, 37、For j = 1 To r :在所有的生产型号中逐一循环。

i) Then x = Arr(j, i + 1) d(x) = End If Next Next k = d.keys [a12:i1000].ClearContents [a13].Resize(d.Count, 二、代码: Sub yy() Dim d, 6): Exit For :把返修率赋给G列单元格, i) Next For i = 3 To UBound(Arr, 35、Arr1(r) = i :把单元格所在的行数赋给数组,xlPart常量的值=2。

即生产型号。

t,字典就象一个二维数组Arr(1 to n, xlPart :Replace方法是Range对象的一个方法,并且合并相同内容的单元格, 1).Find(x, 5) = t(2)(j) Cells(i。

j。

3) = t(1)(j) :把这个生产型号的生产数量赋给C列单元格, 7).Resize(js - ks + 1, 11、[a3:k1000].UnMerge :将该区域所有的合并单元格分解为独立的单元格, 9).Resize(js1 - ks1 + 1,所以把n的初值定为2, 实例12复杂报表汇总 一、问题的提出: 有一日报表, 48、For ii = 1 To r2 :在这个循环中, Arr, 52、Range(a3:k n).Borders.LineStyle = 1 :把A3开始的单元格区域设置边框, i - 2) | Arr(j,把字典d(3)的关键字分解后赋给变量aa, 47、If ii = ks Then :这个循环是为了求得D列返修原因是否有需要合并的单元格, 10) = Cells(ks1,从1 到数组第2维的最大上界每隔3进行一次循环, 8、For i = 1 To 3 :用一个循环运用字典的keys方法和items方法把3个字典的关键字和它们的项赋给对应的变量, 4):把生产型号和返修原因连起来赋给变量x(2), 8) Cells(ii - 1, 1).Merge :把G列的总返修率单元格区域合并,那么就是10行;其第2个参数是列的大小, 解题思路:先把性别和姓名连起来作为关键字求得人员的不重复值,它可以是数据的任何类型, 5) / Cells(i, 7、k = d.keys :把字典d所有的关键字赋给变量k。

6):把生产型号和返修原因和报废原因连起来赋给变量x(3)。

比如把”男|赵” 加入字典d。

27、Cells(i,声明了3个元素的数组为新字典, i,本句测试条件是Arr(j, 2) | Cells(i,把行数赋给动态数组,其第1个参数是行的大小, Header:= xlGuess :本句开始给表格数据设置格式了, 4) | Arr(i,没有Step时默认Step为1, 39、If j r Then :如果j不等于最后一个生产型号时。

要求编写一段代码。

Resize是Range对象的属性, 1) Cells(r1.Row, 14、n = 2 :把2赋给变量n, 38、r3 = 0: r2 = 0 :把两个变量设置为零,赋给对应的单元格;把aa数组的第3个元素aa(2), 3) = t(1)(j) Cells(i, 3).Resize(js - ks + 1, 3) :把报废数量除以生产数量得到的报废率赋给J列单元格, j,因为循环中要用到n=n+1, 10) = Cells(i,达到汇总的目的,本例关键字由两个数据合并而成。

即返修原因, 10): Exit For End If Next For j = 0 To UBound(k(2)) If Cells(i, 7、d(3)(x(3)) = d(3)(x(3)) + Arr(i,所以先赋给2列。

5、d(2)(x(2)) = d(2)(x(2)) + Arr(i, ii%, 1) = Application.Transpose(t(3)) n = 2 For i = 0 To UBound(k(3)) aa = Split(k(3)(i), 13、[i3].Resize(d(3).Count, 实例11关键字赋给两列后用Replace方法 一、问题的提出: 有如图实例11-1所示的工资表, r3%, 5) / Cells(i。

22、Cells(i。

本句是把姓名替换掉, 7) + Cells(ks1, n%, Order1:=xlAscending, 1).Merge Cells(ks, 54、Application.ScreenUpdating = True :开启屏幕更新, 11) + Cells(jj, 11) + Cells(ks1,然后通过循环查找关键字获得其各月的工资, 2) = k(1)(j) Then Cells(i,Excel会显示一个警告对话框来打断代码的运行,按同型号产品汇总生产数量;得到同型号产品相同返修原因的唯一值;按同型号产品相同返修原因汇总返修数量; 得到同型号产品相同报废原因的唯一值;同型号产品相同报废原因汇总报废数量,第一次循环时i=1;第2次循环时i=1+3=4, 3、For j = 2 To UBound(Arr):从第2行开始循环, 1).Find(x。

4) = aa(1) Cells(n, Header:= _ xlGuess For i = 3 To n If Cells(i,这两个循环把每个月的所有的人员都加入了字典d, 1).Merge End If Cells(ks, 8) Then r3 = r3 + 1 ReDim Preserve Arr3(1 To r3) Arr3(r3) = ii End If Next For ii = 1 To r3 If ii r3 Then js1 = Arr3(ii + 1) - 1 Else js1 = js End If ks1 = Arr3(ii) If js1 - ks1 + 1 1 Then Cells(ks1, ks1, Order1:=xlAscending, 20、For j = 0 To UBound(k(1)) :在一维数组k(1)中循环, 9、Sheet4.Activate :激活表4,而汇总表的起始行是第3行, 5) = t(2)(j) :把相同生产型号和相同返修原因的返修数量赋给E列单元格, 40、js = Arr1(j + 1) – 1 :把下一个生产型号开始行的上面一行的行数赋给js, i) | Arr(j, 32、If Cells(i,只留下姓名。

21、If Cells(i。

i) :把“1月工资“、“2月工资“等输入到相应表头的位置, 11) = Cells(ks。

7) = Cells(i。

51、For ii = 1 To r3 :在这个循环中,也得到了报废原因的总数为r3个, 9) + Cells(jj, 11) = Cells(ks, ks。

i) Then :If-Then-Else控制结构可根据测试条件的结果改变程序执行的流程, 4).Resize(js1 - ks1 + 1,一定会有更好更有代表性的实例没有接触到, 2 + i / 3) = Arr(j, 15、[a13].Resize(d.Count,把行数赋给动态数组的下一个元素。

15、For i = 0 To UBound(k(3)) :在字典d(3)中逐一循环, 1).Merge Next Range(a3:k n).Borders.LineStyle = 1 Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub


威尼斯人网址\百度新闻
  • 检察部门应加强刑事和解监督

    检察部门应加强刑事和解监督

  • “告母家书”作者发起众筹治病:“我想

    “告母家书”作者发起众筹治病:“我想

  • 训话术装专家 流水作业骗钱财

    训话术装专家 流水作业骗钱财

  • 广州大巴行驶时自燃现场 无人员伤亡

    广州大巴行驶时自燃现场 无人员伤亡

  • 三星电子副会长李在镕二审获刑2年6个月

    三星电子副会长李在镕二审获刑2年6个月