汇总表格式

详情表格式

要求根据汇总表中的信息,到详情表中查找详细物料的具体个数

最终,对物料的个数进行汇总,结果如下图:

ExcelVba代码如下(有一些注释代码供参考)

Sub Start()
Sheet1.UsedRange.Clear '定义结果数组
Dim detail '计算过程中屏幕不刷新
Application.ScreenUpdating = False
'm表示当前detail数组中已有的元素个数
m =
'定义一个大数组,用于放置结果
ReDim detail( To , To )
'结果的表头
detail(, ) = "物料代码"
detail(, ) = "数量"
'当前工作簿所在地址
p = ThisWorkbook.Path & "\"
'打开汇总表
Set sumsheet = GetObject(p & "汇总.xlsx").Sheets()
'获取汇总表中的内容
rng = sumsheet.UsedRange
'对汇总表中的内容,从第二行开始循环
For i = To UBound(rng)
'获取详细表的名称
fileName = rng(i, ) & ".xls"
'获取板卡数量
bandCount = rng(i, )
'获取详细信息的excel对象
Set excelobj = GetObject(p & fileName)
'获取详细信息所在的sheet
Set sdetail = excelobj.Sheets()
'获取sheet中数据
arr = sdetail.UsedRange
'释放excel
Set excelobj = Nothing
'对于每一条详细信息做循环,j=1是表头
For j = To UBound(arr) '在已有的数据中找到重复项
For k = To m
'如果结果中存在相同项
If detail(k, ) = arr(j, ) Then
'对数量进行求和
detail(k, ) = detail(k, ) + arr(j, ) * bandCount
'进入下一次循环
GoTo n
End If Next
'm表示当前detail数组中已有的元素个数
m = m +
'累计detail用m
'取物料代码
detail(m, ) = arr(j, )
'计算物料数量
detail(m, ) = arr(j, ) * bandCount 'goto 跳出本次循环
n:
Next Next
' 循环遍历文件
' Do While f <> ""
' If f <> ThisWorkbook.Name Then
' n = n + 1
' Set sht = GetObject(p & f).Sheets(1)
' Arr = sht.UsedRange
' Workbooks(f).Close False
' For i = 1 To UBound(Arr)
' m = m + 1
' brr(m, 1) = f
' For j = 2 To r
' brr(m, j) = Arr(i, j - 1)
' Next
' Next
' End If
' f = Dir
' Loop Set sumsheet = Nothing
With Sheet1
.[a1].Resize(m, UBound(detail, )) = detail
End With ' Range("A2").Select
' ActiveWindow.ScrollRow = 1
' 'Sheets.Add
' ActiveWorkbook.PivotCache.CreatePivotTable TableDestination:="Sheet2!R3C1", TableName:="数据透视表3", DefaultVersion:=1
' Range("A3").Activate
' ActiveSheet.PivotTable.AddDataField Field:=ActiveSheet.PivotTable.PivotField
' With ActiveSheet.PivotTable.PivotField
' .Orientation = xlRowField
' .Position = 1
' End With ' Call BuildPivotTable
Application.ScreenUpdating = True
End Sub '创建数据透视表
Sub BuildPivotTable() TableName = "数据透视表5" ActiveWindow.ScrollRow =
'建立透视表缓存数据
Set ptcache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Sheet1.UsedRange)
'建立透视表,TableDestination用于指定 创建表的位置,wps这个参数好像没用,一直都会新建一个表,并以A1单元格为左上角定位
Set pt = ptcache.CreatePivotTable(TableDestination:=Sheet1.Range("D10"), TableName:=TableName, DefaultVersion:=) '将物料代码作为行字段
With ActiveSheet.PivotTables(TableName).PivotFields("物料代码")
.Orientation = xlRowField
.Position =
End With ' With ActiveSheet.PivotTables(TableName).PivotFields("数量")
' .Orientation = xlColumnField
' .Position = 1
' End With '对数据透视表 添加数据字段datafield
ActiveSheet.PivotTables(TableName).AddDataField ActiveSheet.PivotTables(TableName).PivotFields("数量"), "求和:数量", xlSum
End Sub

利用Excel-Vba进行多表汇总和数据透视表的更多相关文章

  1. 【Excle数据透视】如何创建多条件汇总的数据透视表

    创建多条件的数据透视表,源数据如下: 插入数据透视表 根据需求拖拽字段(统计该地区下销售人员销售业绩) 数据透视结果 数据透视表布局的各个区域说明 区域 说明 数值 用于显示汇总值数据 行标签 用于将 ...

  2. EXCEL 2010学习笔记 —— 数据透视表

    今天整理一下EXCEL2010 数据透视表的课程笔记,数据透视表可以对多组数据进行统计和整理,是一种基本的数据可视化工具. 记录6个方面的总结: 1.创建数据透视表 2.更改数据透视表的汇总方式 3. ...

  3. VBA学习之关于数据透视表的应用

    工作中很多地方需要同时处理多个数据表,而且用数据透视表进行排版,排序,计算字段,一个一个的做非常累,这里给出批量处理的方法. 学习VBA之前最好懂一点点VB的基础知识,因为里面的很多语法问题都是由VB ...

  4. C# 操作Excel数据透视表

    一.概述 数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等,可动态地改变透视表版面布置,也可以重新安排行号.列标和页字段.当改变版面布置时,数据透视表也会按照新的 ...

  5. 使用excel 数据透视表画图

    ①    打开Excel,选中需要制表的数据,点击“插入”->“数据透视表”          ②    出现下列对话框,点击“确定”          ③    再新的“sheet”表内对“数 ...

  6. 妙用Excel数据透视表和透视图向导,将二维数据转换为一维数据

    项目中,每年都会有各种经销商的各种产品目标数据导入,经销商和产品过多,手工操作过于单调和复杂.那有没有一种方式可以将复杂的二维数据转换为一维数据呢? 有,强大的Excel就支持此功能. 常用Excel ...

  7. Excel2010数据透视表1

    “透视”作为一个动词,意思是旋转.如果将数据看成是一个物体,数据透视表允许旋转数据汇总,从不同角度或观点来看它.数据透视表能够轻松地移动字段,交换字段位置,设置创建项目的特定组. 如果给出一个陌生的物 ...

  8. 小白学 Python 数据分析(12):Pandas (十一)数据透视表(pivot_table)

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  9. 【Excle数据透视表】如何创建非共享缓存的数据透视表

    一般情况下,利用同一个数据源创建多个数据表时,默认创建的是共享缓存的数据透视表.刷新一个数据透视表时会影响其他数据透视表的展示结果. 解决方案 创建非共享缓存的多个数据透视表 步骤一 单击工作表数据任 ...

随机推荐

  1. vue 学习笔记(二)

    最近公司赶项目,一直也没时间看 vue,之前看下的都快忘得差不多了.哈哈哈,来一起回顾一下vue 学习笔记(一)后,继续向下看嘛. #表单输入绑定 基础用法 v-model 会忽略所有表单元素的 va ...

  2. web.xml 设置字符编码

    个人理解  就是为了防止在前端输入的数据到了后台发生乱码 直接复制到web.xml里面就可以使用 亲测 能用!!! <!-- 前端过滤器设置字符编码 --> <filter> ...

  3. Letters Removing CodeForces - 899F (线段树维护序列)

    大意: 给定字符串, 每次删除一段区间的某种字符, 最后输出序列. 类似于splay维护序列. 每次删除都会影响到后面字符的位置 可以通过转化为查询前缀和=k来查找下标. #include <i ...

  4. C#数组--(一维数组,二维数组的声明,使用及遍历)

    数组:是具有相同数据类型的一组数据的集合.数组的每一个的变量称为数组的元素,数组能够容纳元素的数称为数组的长度. 一维数组:以线性方式存储固定数目的数组元素,它只需要1个索引值即可标识任意1个数组元素 ...

  5. selenium自动化定位方式

    自动化定位方式 1.String Xpath = String.format("//*[@id=\"saveFileKeyWordsBtnHand\"]/../../.. ...

  6. 【实战问题】【4】Vue写的页面在微信手机端和微信web开发者工具中都能正常显示,但是在微信pc端上显示空白

    原因:pc端微信浏览器不支持es6,而代码中使用了 let . 解决:将 let 改为 var(若使用 es6 语法比较多,可以进行转换,将 es6 语法转为 es5) 参考博客: 1,h5微信页面在 ...

  7. what API can do

    APIs for manipulating documents loaded into the browser. The most obvious example is the DOM (Docume ...

  8. Java设计模式知识整理

    1.Java设计模式     Java设计模式分为三种类型,分别是:      ①.创建型设计模式:是对对象创建过程的各种问题和解决方案的总结           包括:静态工厂模式.抽象工厂模式.单 ...

  9. 版本管理工具Git(2)git的使用

    上一篇带大家认识了Git,在本篇中将讲解Git的安装及使用: Git系列导航 版本管理工具Git(1)带你认识git 版本管理工具Git(2)git的安装及使用 版本管理工具Git(3)VS下如何使用 ...

  10. db2常用语句

    连接数据库 db2 connect to chmgmdb user ch_mgm 断开数据库 db2 disconnect current 查询 db2 "select * from btp ...