如何将可见的透视项目数据复制到Excel VBA中的单元格

在这里输入图像说明

我在透视报表filter中有国家代码。 我想获得可见的重要项目数据,并将每个值从A1的每个单元格中。 我使用下面的代码。 但所有单元格只显示filter中的最后一个值。 我需要从A1自动移动,帮助我

Sub Getpivotitem() Dim ws As Worksheet Dim str1 As Variant Dim Data As Variant Dim rng As Range Set rng = Range("A1:X1") Set ws = Sheets("Sheet1") Dim pi As PivotItem For Each pi In ws.PivotTables("PivotTable1").PivotFields("Country Code").PivotItems If pi.Visible = True Then For Each cell In rng.Columns cell.Value = pi Next cell End If Next pi End Sub 

你的输出是由你的嵌套循环造成的。 我想这是你要找的

 Sub Getpivotitem() Dim ws As Worksheet Dim str1 As Variant, Data As Variant Dim pi As PivotItem Dim rng As Range Dim j As Long Set ws = Sheets("Sheet1") Set rng = Range("A1:X1") For Each pi In ws.PivotTables("PivotTable1").PivotFields("Country Code").PivotItems If pi.Visible = True Then j = j + 1 ws.cells(1, j) = pi End If Next pi End Sub 

适用于Excel 2010或更高版本的非VBA方法:只需制作数据透视表副本,并从中删除除“国家/地区代码”字段以外的所有字段。 将国家/地区代码字段移到ROWS或COLUMNS窗格,并将两个数据透视表连接到切片器。 Bingo:你已经有了一个列表,向你展示在数据透视表中做出的select。 更好的是,用户可以简单地使用切片机进行select。

以下代码将从Country Code栏复制并粘贴所有可见值到A1B1C1 …….单元格。

 Sub CopyVisiblesValues() Sheet1.PivotTables("PivotTable1").PivotSelect "'Country Code'[All]", xlLabelOnly + xlFirstRow, True Selection.Copy Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True End Sub 

这里的Country Code是数据透视表的列标题以及源数据的列标题。 您可能需要使用您的Country Code进行调整。