汇总表格式

详情表格式

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

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

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. 蓝牙 - 小米手环3 NFC版BLE协议研究

    0x01 前言 最近买到了小米手环3nfc版本,基本上实现了我对手环的所有功能需求,高中的时候就缠线圈做过戒指一卡通,但是缺陷是不好看,而且只能储存一张卡,等 手环3nfc版我认为比较好的功能 可以储 ...

  2. springboot自定义starter

    1,创建一个空工程 2,new一个Modules  ---------------- maven (启动器) : springboottest-spring-boot-starter 3,new一个M ...

  3. 括号配对问题-java:Stack

    题目描述: 现在,有一行括号序列,请你检查这行括号是否配对. 输入描述: 第一行输入一个数N(0<N<=100),表示有N组测试数据.后面的N行输入多组输入数据,每组输入数据都是一个字符串 ...

  4. linux文件名乱码解决

    问题描述:公司的FTP服务器早就搭建好,windows客户端可以上传文件到FTP服务器,但是上传去的文件在LINUX目录下文件是乱码. 解决方法:首先编辑/etc/sysconfig/i18n这个文件 ...

  5. JS中for循环变量作用域

    http://www.cnblogs.com/zhus/p/6513741.html  博主写得很好

  6. js统一设置富文本中的图片宽度

    var txt = layedit.getContent(ieditor);//获取编辑器内的文本var regex = new RegExp('<img', 'gi');txt = txt.r ...

  7. 因为没有安装xcode,得不到xcode证书报错

    新接的一个项目.在从gitlab上clone代码的时候报错: Agreeing to the Xcode/iOS license requires admin privileges, please r ...

  8. 微信小程序 wx.request

    onLoad: function () { var that = this console.log('https://free-api.heweather.com/s6/weather?locatio ...

  9. 深度学习梯度反向传播出现Nan值的原因归类

    症状:前向计算一切正常.梯度反向传播的时候就出现异常,梯度从某一层开始出现Nan值(Nan: Not a number缩写,在numpy中,np.nan != np.nan,是唯一个不等于自身的数). ...

  10. lr12关联,响应乱码

    1.前程贷登录.投标脚本 Action() { //    web_url("登录页", //        "URL=http://120.78.128.25:8765 ...