VBA编程初试----利用VBA实现将多个sheet表相同位置的内容复制汇总到一个sheet表中列成一列

需求:最近工作需要将多个采购单的数据汇总到一张表中查看,因为每张采购单格式相同,且每个采购单对应一个sheet表,现在想把张三明细、李四明细中的每月采购总额、期初应付款余额、供应商名称等汇总到一张sheet中,去网上搜索了下,发现有个代码很好用,记录下来以备后续查看。

张三表:

第一步:启用宏文件,新建汇总表,右击汇总表---查看代码

找到excel,右击插入----模块,在右边模块中写入代码段保存。

Function AllSh(xStr As String, i As Integer)

Application.Volatile

AllSh = Sheets(i).Range(xStr).Value

End Function

 

回到excel,在任意单元格输入=allsh("J4",ROW(A2))

公式向下复制。

依此类推,如要提取B3单元格的数据,只需将其J4改为B3。

 

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤实现: 1. 在一个新的Sheet中创建汇总数据透视,并设置好数据透视的格式。 2. 编写一个VBA宏,遍历所有需要生成数据透视Sheet。 3. 在遍历过程中,对每个Sheet进行以下操作: - 选中需要生成数据透视的数据区域。 - 创建数据透视,并设置好数据透视的格式。 - 将数据透视的数据复制汇总数据透视的下方。 4. 运行VBA宏,生成所有数据透视,并将它们汇总汇总数据透视表中。 以下是一个示例VBA宏: ```VBA Sub GeneratePivotTables() Dim summarySheet As Worksheet Dim dataSheet As Worksheet Dim lastRow As Long Dim pivotTable As PivotTable Dim pivotCache As PivotCache '获取汇总数据透视所在Sheet Set summarySheet = ThisWorkbook.Sheets("Summary") '清空汇总数据透视下方的所有数据 summarySheet.Range("A2:Z1000").ClearContents '遍历所有需要生成数据透视Sheet For Each dataSheet In ThisWorkbook.Sheets If dataSheet.Name <> summarySheet.Name Then '选中需要生成数据透视的数据区域 lastRow = dataSheet.Cells(Rows.Count, 1).End(xlUp).Row dataSheet.Range("A1:B" & lastRow).Select '创建数据透视 Set pivotCache = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Selection) Set pivotTable = pivotCache.CreatePivotTable(TableDestination:=summarySheet.Range("A" & Rows.Count).End(xlUp).Offset(1), TableName:="PivotTable" & dataSheet.Name) '设置数据透视的格式 With pivotTable .PivotFields("Column1").Orientation = xlRowField .PivotFields("Column2").Orientation = xlColumnField .AddDataField .PivotFields("Data"), "Sum of Data", xlSum End With '复制数据透视的数据到汇总数据透视下方 pivotTable.TableRange2.Copy summarySheet.Range("A" & Rows.Count).End(xlUp).Offset(1) End If Next '自动调整汇总数据透视的列宽和行高 summarySheet.Cells.EntireColumn.AutoFit summarySheet.Cells.EntireRow.AutoFit End Sub ``` 注意:在运行该宏前,需要先在工作簿中创建一个名为"Summary"的Sheet,并在该Sheet中创建好汇总数据透视的格式。同时,该示例宏假设每个需要生成数据透视Sheet中的数据区域为A1:Bn,其中第一列为"Column1",第二列为"Column2",第三列为"Data"。你需要根据你的实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值