结合两张纸上的数据并在另一张纸上生成数据透视表

我有一张名为Data and Missing的表。 两张表都包含相同数量的列。 数据表具有从第5行开始的数据,缺less的表具有从第2行开始的数据。

我想在我的工作表“开发”中生成一个数据透视表,其中我将有一个数据透视表,显示数据。

我已经提供了一个相同的示例图像。

我有一个工作表下面的代码运行,并产生数据透视表。 有人build议,我可以如何做到这一点的要求。

Sub pivotAPQP() Dim sp1 As Worksheet Dim pcache As PivotCache Dim ptable As PivotTable Dim ct As Integer Set sp1 = Sheets("Dev") 'Se the pivot cache for pivot table Set pcache = ActiveWorkbook.PivotCaches.Create(xlDatabase, "'Data'!R4C1:R1048576C16") 'set the pivot tbale in sheet Set ptable = pcache.CreatePivotTable(sp1.Range("A3"), TableName:="PivotTable1") 'Decalre the parameter needed to be counted ptable.AddDataField ptable.PivotFields("COlour"), "Count of colour", xlCount 'Declare the parameter for the row field adn arrange the values in descending order With ptable With .PivotFields("Loc") .Orientation = xlRowField .Position = 1 .PivotItems("(blank)").Visible = False .AutoSort xlDescending, "Count of colour" End With 'Declare the parameters for column field and alighn the values to center With .PivotFields("Colour") .Orientation = xlColumnField .Position = 1 .PivotItems("(blank)").Visible = False ptable.TableRange2.Offset(0, 1).HorizontalAlignment = xlCenter End With End With End Sub 

这是我的sheet1结构。在原来的工作表我有21列。

这是我的sheet2,它和sheet1是一样的,我有21列

这是我的结果表与枢轴,并希望有一个类似的类型。

编辑:试图执行我的要求由专家提供的代码

 Sub pivotAPQP1() Dim wsData As Worksheet, wsMissing As Worksheet, wsPivot As Worksheet Dim tbl1 As ListObject, tbl2 As ListObject Dim pc As PivotCache, pt As PivotTable, pf As PivotField Application.ScreenUpdating = False Set wsData = Sheets("Data") Set wsMissing = Sheets("Missing") Set wsPivot = Sheets("Dev") wsPivot.Cells.Clear Set tbl1 = wsData.ListObjects("Table10") Set tbl2 = wsMissing.ListObjects("Table19") Set pc = ThisWorkbook.PivotCaches.Create( _ SourceType:=xlConsolidation, _ SourceData:=Array( _ Array("'" & wsData.Name & "'!" & tbl1.Range.Address(ReferenceStyle:=xlR1C1), wsData.Name), _ Array("'" & wsMissing.Name & "'!" & tbl2.Range.Address(ReferenceStyle:=xlR1C1), wsMissing.Name))) Set pt = pc.CreatePivotTable( _ TableDestination:=wsPivot.Range("A3"), _ TableName:="PivotTable1") pt.AddDataField pt.PivotFields("Colour"), "Count of colour", xlCount With pt With .PivotFields("Loc") .Orientation = xlRowField .Position = 1 .PivotItems("(blank)").Visible = False .AutoSort xlDescending, "Count of colour" End With 'Declare the parameters for column field and alighn the values to center With .PivotFields("Colour") .Orientation = xlColumnField .Position = 1 .PivotItems("(blank)").Visible = False pt.TableRange2.Offset(0, 1).HorizontalAlignment = xlCenter End With End With End Sub 

你不需要VBA。 如果将两个源范围都设置为表,并记下它们的名称,例如Table3和Table4

1)将源范围设置为表格

2)按Alt,D,P打开可转位表向导,然后select多个合并范围并创build可转动的报表 巫师

3)select为我创build一个页面:

单页选项

4)添加你的表名,如图所示

表名称条目

5)根据需要安排字段 现场安排

6)取消选中使用下拉菜单显示的空白列 删除空白栏

你可以给一些比这里显示的更有意义的名字。

使用VBA,您可以在执行上述步骤的同时录制macros,以了解代码步骤和语法。

一个例子,将为您的环境定制,如下所示:

  Sub CreatePivotMultiRange1() ' ' CreatePivotMultiRange1 Macro ' ' ActiveWorkbook.PivotCaches.Create(SourceType:=xlConsolidation, SourceData:= _ Array(Array("Table3[#All]", "Item1"), Array("Table4[#All]", "Item2")), Version:= _ 6).CreatePivotTable TableDestination:="[Book1]Sheet7!R15C8", TableName:= _ "PivotTable7", DefaultVersion:=6 ActiveSheet.PivotTables("PivotTable7").DataPivotField.PivotItems( _ "Count of Value").Position = 1 With ActiveSheet.PivotTables("PivotTable7").PivotFields("Value") .Orientation = xlColumnField .Position = 2 End With ActiveWorkbook.ShowPivotTableFieldList = False Range("L18").Select With ActiveSheet.PivotTables("PivotTable7").PivotFields("Row") .PivotItems("(blank)").Visible = False End With Range("K16").Select ActiveSheet.PivotTables("PivotTable7").PivotFields("Column").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("PivotTable7").PivotSelect "'Column Grand Total'", _ xlDataAndLabel + xlFirstRow, True ActiveSheet.PivotTables("PivotTable7").ColumnGrand = False End Sub 

你的线路:

 Set pcache = ActiveWorkbook.PivotCaches.Create(xlDatabase, "'Data'!R4C1:R1048576C16") 'set the pivot tbale in sheet Set ptable = pcache.CreatePivotTable(sp1.Range("A3"), TableName:="PivotTable1") 

变成类似于:

  ActiveWorkbook.PivotCaches.Create(SourceType:=xlConsolidation, SourceData:= _ Array(Array("Table3[#All]", "Item1"), Array("Table4[#All]", "Item2")), Version:= _ 6).CreatePivotTable TableDestination:=sp1.Range("A3"), TableName:= _ "PivotTable1", DefaultVersion:=6 Set pt = sp1.PivotTables("PivotTable1") 

然后在声明的顶部添加以下行:

  Dim pt As PivotTable 

您将需要执行一些代码更新,因为您已经完成了ptable字段的添加。

macros由macroslogging的其余部分给你的布局。

请给这个尝试…

在实现这个代码之前要知道的重要事情:

  1. 该代码假定在工作簿中有三张名为“Data”,“Missing”和“Dev”的工作表。
  2. 在数据表上,将您的数据转换为Excel表并将其命名为“数据”。
  3. 同样,在缺页上,将您的数据转换为Excel表格并命名为“缺失”。

这就是所有你需要实现这个代码到你的工作簿。 该代码将以您需要的格式在开发板上创build一个数据透视表。

码:

 Sub CreatePivotTable() Dim wsData As Worksheet, wsMissing As Worksheet, wsPivot As Worksheet Dim tbl1 As ListObject, tbl2 As ListObject Dim pc As PivotCache, pt As PivotTable, pf As PivotField Application.ScreenUpdating = False Set wsData = Sheets("Data") Set wsMissing = Sheets("Missing") Set wsPivot = Sheets("Dev") wsPivot.Cells.Clear Set tbl1 = wsData.ListObjects("Data") Set tbl2 = wsMissing.ListObjects("Missing") Set pc = ThisWorkbook.PivotCaches.Create( _ SourceType:=xlConsolidation, _ SourceData:=Array( _ Array("'" & wsData.Name & "'!" & tbl1.Range.Address(ReferenceStyle:=xlR1C1), wsData.Name), _ Array("'" & wsMissing.Name & "'!" & tbl2.Range.Address(ReferenceStyle:=xlR1C1), wsMissing.Name))) Set pt = pc.CreatePivotTable( _ TableDestination:=wsPivot.Range("A3"), _ TableName:="PivotTable1") Set pf = pt.PivotFields("Value") pf.Orientation = xlColumnField Set pf = pt.PivotFields("Column") pf.Orientation = xlHidden pt.ColumnGrand = False Application.ScreenUpdating = True End Sub