ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何以指定字段合并汇总一个工作簿中的多个工作表?

如何以指定字段合并汇总一个工作簿中的多个工作表?

作者:绿色风 分类: 时间:2022-08-17 浏览:108
楼主
liuguansky
Q:


说明
  1sheet1sheet2.............实际工作中有上百个,字段是不固定的,品种名称也不固定
  2、合并表中的字段是指定好的,这只是个例子

要求:
  以指定的字段分品种汇总到“合并”表中
A:用数组加字典可以实现,代码如下:

  1. Sub justtest()
  2.     Dim d, arr, intCol%, i%, j%, t&, arrt(), k&
  3.     Set d = CreateObject("scripting.dictionary")
  4.     intCol = Cells(1, 1).End(2).Column
  5.     arr = Cells(1, 2).Resize(1, intCol - 1).Value
  6.     For i = 1 To intCol - 1
  7.         d(arr(1, i)) = i
  8.     Next i
  9.     For i = 1 To Sheets.Count
  10.         If Sheets(i).Name <> ActiveSheet.Name Then
  11.             With Sheets(i)
  12.                 arr = .Range("A1").CurrentRegion.Value
  13.                 For t = 2 To UBound(arr, 1)
  14.                     If Not d.Exists(arr(t, 1)) Then
  15.                         k = k + 1: ReDim Preserve arrt(intCol - 1, intCol To intCol + k - 1)
  16.                         arrt(0, intCol + k - 1) = arr(t, 1): d.Add arr(t, 1), intCol + k - 1
  17.                     End If
  18.                     For j = 2 To UBound(arr, 2)
  19.                         If d.Exists(arr(1, j)) Then
  20.                             Debug.Print d(arr(1, j)) & d(arr(t, 1))
  21.                             arrt(d(arr(1, j)), d(arr(t, 1))) = arrt(d(arr(1, j)), d(arr(t, 1))) + arr(t, j)
  22.                         End If
  23.                     Next j
  24.                 Next t
  25.             End With
  26.         End If
  27.     Next i
  28.     Range(Cells(2, 1), Cells(Rows.Count, intCol)).ClearContents
  29.     Range("a2").Resize(k, intCol) = Application.Transpose(arrt)
  30.     Set d = Nothing
  31. End Sub

2楼
xyf2210
学习个

免责声明

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

评论列表
sitemap