我正在尝试创建一个数据透视表和数据透视表,其中包含将根据所选内容更改的标题和图例。例如,如果我选择Apple和Banana,如果我选择Apple,标题和图例应该是Apple。这部分相对容易,但是,如果我同时选择Apple和Banana,则数据透视表会显示(多个项目)。
我希望这能代替" Apple,Banana",但我对我如何做到这一点没有丝毫的线索。我在网上浏览了一下,我发现分享我的问题的几个人最终没有收到回复(即Excel 2010 Pivot Table Filter - How to print multiple filter selection values)
非常感谢任何帮助!
编辑:我愿意使用宏来实现这一点,所以让我们看看VBA社区是否有任何想法。
答案 0 :(得分:2)
Public Sub test()
Dim PVI As PivotItem
Dim Pname(100) As String
Dim MS As String
For Each PVI In ActiveSheet.PivotTables("PivotTable6").PivotFields("Name").PivotItems
Pname(i) = PVI.Value
If MS = "" Then
MS = Pname(i)
Else
MS = MS & ", " & Pname(i)
End If
i = i + 1
Next PVI
'MsgBox MS
ActiveSheet.ChartObjects(1).Chart. _
ChartTitle.Characters.Text = MS
End Sub
此代码将循环显示数据透视表中的字段名称(在本例中为" Name")(在本例中为" PivotTable6")并将收集所有数据数组Pname
。然后,它会将您的图表标题更改为整个字符串,其中包含逗号。
可能需要对你的应用程序进行一些调整,但我相信你能搞清楚
答案 1 :(得分:0)
不是编程答案,但我认为这可以做你想要的。在我的例子中,我使用了一个表,其中包含三种水果的月销售数据:苹果,香蕉和橙子。从色带中选择Insert>枢轴表>数据透视图。它应该是这样的:
单击Pivot表占位符(在我的图片左侧)和pivot字段" play area"在右侧应更改为包括行和列标签。将图例上所需的项目类型拖到“列标签”中,将x轴项目拖动到“行标签”,然后将要绘制的数据拖动到“值”。将图表类型更改为折线图,你应该得到这样的东西,你想要的过滤器直接在图例上方:
希望这能做到你想要的!
答案 2 :(得分:0)
下面的宏循环遍历数据透视表的PageField以查找可见元素,创建包含这些元素的字符串,然后更新图表标题:
Sub UpdateChartTitle()
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim co As ChartObject
Dim c As Chart
Dim s As String
s = ""
Set pt = ThisWorkbook.ActiveSheet.PivotTables(1) 'specify the correct PivotTable
Set pf = pt.PageFields.Item(1) 'should be the only PageField
For Each pi In pf.PivotItems 'loop through the fields and find only the visible ones
If pi.Visible Then s = s & pi.Name & ", "
Next
s = Left(s, Len(s) - 2)
Set co = ThisWorkbook.ActiveSheet.ChartObjects(1) 'specify the correct chart object
co.Chart.ChartTitle.Text = s 'change the title
End Sub
答案 3 :(得分:0)
这里是更改标题栏的代码,将其放在工作表模块下(以便在任何更改时触发)。您唯一需要做的就是将指针更改为指向您自己的表格和图表 -
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As PivotField
Dim b As PivotItem
Dim c As ChartObject
Dim headerText As String
'set pointers to the objects, replace the pointers with our own !!!!!
Set a = Application.Worksheet("Sheet 1").PivotTables("PivotTable1").PivotFields("Type")
Set c = Application.Worksheet("Sheet 1").ChartObjects("Chart 1")
'loop trough the field items and save the visible values to a string.
'You could hone the code to change the separator for the items for it to appear the way you like.
'Also note that the title bar on the chart has to be visible in order for this to work,
'if not it will give you subscript out of range error.
For Each b In a.PivotItems
If b.Visible = True Then
headerText = headerText + b.Value + ", "
End If
Next
'Set the value to the title bar
c.Chart.ChartTitle.Text = headerText
End Sub
询问您是否需要对代码的某些部分进行任何详细解释或说明。