VBA数据透视表|在VBA中创建数据透视表的步骤

Excel VBA数据透视表

数据透视表 是总结大量数据报告的核心。我们还可以通过VBA编码自动化创建数据透视表的过程。它们是任何报表或仪表板的重要组成部分,在excel中,使用按钮创建表很容易,但是在VBA中,我们必须编写一些代码来自动化我们的数据透视表,而在excel 2007及其在VBA中的较早版本之前,我们不需要为数据透视表创建缓存,但是在excel 2010及其更高版本中,需要缓存。

VBA可以为我们节省很多时间,尽管掌握起来并不容易,但值得花时间学习。我花了6个月的时间来理解通过VBA创建数据透视表的过程。您知道这六个月为我带来了什么奇迹,因为在尝试创建数据透视表时我犯了很多错误。

但是实际的事情是我从错误中吸取了教训,现在我正在写这篇文章,向您展示如何使用代码创建数据透视表。

只需单击一个按钮,我们就可以创建报告。

在VBA中创建数据透视表的步骤

您可以在此处下载此VBA数据透视表模板– VBA数据透视表模板

要创建数据透视表,拥有数据很重要。为此,我创建了一些虚拟数据,您可以下载工作簿,以获取与我相同的数据。

步骤1:数据透视表是一个引用数据透视表的对象,该变量将变量声明为数据透视表。

代码:

 Sub PivotTable()Dim PTable作为数据透视表结尾Sub 

第2步:在创建数据透视表之前,首先需要创建一个数据透视表缓存以定义数据源。

在不打扰的情况下,在常规工作表数据透视表中,我们将在后台创建数据透视表缓存。但是在VBA中,我们必须创建。

为此,定义变量PivotCache。

代码:

 将PCache变暗为PivotCache

第三步:要确定枢轴数据范围,请将变量定义为范围。

代码:

 暗淡范围作为范围

第4步:要插入数据透视表,我们需要一个单独的工作表来为数据透视表添加工作表,将变量声明为工作表。

代码:

 昏暗的PSheet作为工作表

步骤5:与引用包含工作表的数据类似,将另一个变量声明为Worksheet。

代码:

 昏暗的DSheet作为工作表

步骤6: 最后,找到最后使用的行和列,再定义两个变量作为Long。

代码:

 昏暗的LR一样长昏暗的LC一样长 

步骤7: 现在,我们需要插入一个新工作表以创建数据透视表。在此之前,如果有任何数据透视表,那么我们需要删除它。

步骤8: 现在,将对象变量PSheet和DSheet分别设置为“数据透视表”和“数据表”。

步骤9: 在数据表中找到最后使用的行和最后使用的列。

步骤10: 现在,通过使用最后一行和最后一列来设置枢轴范围。

这将完美地设置数据范围。即使数据表中有任何添加或删除的数据,它也会自动选择数据范围。

步骤11: 在创建数据透视表之前,我们需要创建一个数据透视表缓存。使用下面的VBA代码设置数据透视表缓存变量。

步骤12: 现在创建一个空白的数据透视表。

步骤13: 插入数据透视表后,我们需要首先插入行字段。因此,我将在“国家/地区”列中插入行字段。

笔记: 下载工作簿以了解数据列。

步骤14: 现在,我将在行字段中插入另一个项目作为第二个位置项目。我将产品作为第二行项目插入行字段。

步骤15: 在将列插入行字段之后,我们需要在列字段中插入值。我将“细分”插入列字段。

步骤16: 现在我们需要在数据字段中插入数字。因此,在数据字段中插入“销售”。

步骤17: 我们完成了数据透视表摘要部分,现在我们需要格式化表格。要格式化数据透视表,请使用以下代码。

笔记: 若要具有更多不同的表格样式,请将它们记录在宏中并获取表格样式。

要以表格形式显示行字段值项,请在底部添加以下代码。

好的,如果我们使用F5键或手动运行此代码,我们已经完成了,我们应该获得像这样的数据透视表。

像使用VBA编码一样,我们可以自动化创建数据透视表的过程。

供您参考,我给出了下面的代码。

 Sub PivotTable()Dim PTable as PivotTable Dim PCache As PivotCache Dim PRanges作为范围Dim PSheet As Worksheet Dim DSheet As Worksheet Dim LR As Long Dim LC as Long on Error Resume下一个Application.DisplayAlerts = False Application.ScreenUpdating = False Worksheets(“ Pivot工作表”)。删除'这将删除现有的数据透视表工作表Worksheets.Add After:= ActiveSheet'这将添加新的工作表ActiveSheet.Name =“数据透视表”'将此工作表重命名为“数据透视表”,出错时转到0设置PSheet = Worksheets(“数据透视表”)设置DSheet = Worksheets(“数据表”)'查找数据表中最后使用的行和列LR = DSheet.Cells(Rows.Count,1).End(xlUp).Row LC = DSheet.Cells(1,Columns.Count).End(xlToLeft).Column'设置数据透视表数据范围Set PRange = DSheet.Cells(1,1).Resize(LR,LC)'设置数据透视表Set PCache = ActiveWorkbook.PivotCaches.Create(xlDatabase,SourceData:= PRange)'创建空白数据透视表设置PTable = PCache.CreatePivotTable(TableDestination:= PSheet.Cells(1 ,1),TableName:=“ Sales_Report”)'将国家/地区插入通过PSheet.PivotTables(“ Sales_Report”)。PivotFields(“ Country”)提交的行。Orientation= xlRowField .Position = 1结尾为'将产品插入到提交的行并位置2带有PSheet.PivotTables(“ Sales_Report”)。PivotFields(“ Product”)。Orientation= xlRowField .Position = 2以'将段插入到列字段结尾,位置1带有PSheet.PivotTables(“ Sales_Report”)。PivotFields(“ Segment“).Orientation = xlColumnField .Position = 1以'将Sales列插入到带有PSheet.PivotTables(” Sales_Report“)。PivotFields(” Sales“)的数据字段中。Orientation = xlDataField .Position = 1以'Format Pivot结束Table PSheet.PivotTables(“ Sales_Report”)。ShowTableStyleRowStripes = True PSheet.PivotTables(“ Sales_Report”)。TableStyle2 =“ PivotStyleMedium14”'以表格形式显示PSheet.PivotTables(“ Sales_Report”)。RowAxisLayout xlTabertRow应用程序。 ScreenUpdating =真实结束子