ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用vba代码收集汇总分散的数据?

如何用vba代码收集汇总分散的数据?

作者:绿色风 分类: 时间:2022-08-17 浏览:105
楼主
kevinchengcw
Q: 如何用vba代码收集汇总分散的数据?
A: 代码如下:
  1. Type myType  '定义一个自定义类型用于装载收集到的内容
  2. Val1 As Double
  3. Val2 As Double
  4. Val3 As Double
  5. End Type
  6. Sub test()
  7. Dim Total() As myType, Ws As Worksheet, Rng1 As Range, Rng2 As Range, Rng3 As Range, R As Range, N&
  8. ReDim Total(0)  '初始化一下自定义类型的数组
  9. For Each Ws In Worksheets  '循环各个工作表
  10.     Set Rng1 = Nothing: Set Rng2 = Nothing: Set Rng3 = Nothing  '先清空要查找的目标单元格指向变量
  11.     If Ws.Name <> "总表效果" Then  '如果不是总表,则进行采集操作
  12.         With Ws
  13.             With .UsedRange  '在使用区域内查找三个关键字的单元格,并分别赋值给变量
  14.                 Set Rng1 = .Find("税收")
  15.                 Set Rng2 = .Find("小计")
  16.                 Set Rng3 = .Find("反扣")
  17.             End With
  18.             For Each R In .Range(Rng1.Offset(1), .Cells(.Rows.Count, Rng1.Column).End(3))  '循环关键字对应的数据区
  19.                 With Total(UBound(Total))  '将当前循环到的内容提取并赋值给自定义类型的数组对应项
  20.                     .Val1 = R.Value
  21.                     .Val2 = Ws.Cells(R.Row, Rng2.Column).Value
  22.                     .Val3 = Ws.Cells(R.Row, Rng3.Column).Value
  23.                 End With
  24.                 ReDim Preserve Total(0 To UBound(Total) + 1)  '将数组再加多一项
  25.             Next R
  26.         End With
  27.     End If
  28. Next Ws
  29. With Worksheets("总表效果").[d2]  '在汇总表中循环提取出内容放入对应单元格中
  30.     For N = LBound(Total) To UBound(Total) - 1
  31.         .Offset(N, 0) = Total(N).Val1
  32.         .Offset(N, 1) = Total(N).Val2
  33.         .Offset(N, 2) = Total(N).Val3
  34.     Next N
  35. End With
  36. End Sub

利用type类型可以定义有明确含义的子项,便于程序阅读。
2楼
成就滋味
学习了

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap