使用Vba将公式添加到数据透视表标题

我正在编写一个代码,根据所选的过滤条件创build一个带有variables标题的数据透视表。

我无法在.charttitle.characters.text格式中input公式,并在透视表中select新的filter时自动更新公式。

这是我的代码。 正如你所看到的,我试图将Chart标题关联到基于数据透视表的单元格。 如果有更简单的方法来编码,请让我知道。

数据透视表filter位于工作表(“数据库枢轴”)。范围(“B1”)如果不是特别清楚。

Set objTable = ActiveSheet.PivotTables("SA Pivot Table") Set objPivRange = objTable.TableRange1 Sheets("SA").Range("Z1").Formula = "=IF('Database Pivot'!$B$1=""(All)"", ""Since "" & TEXT('Database'!$L$2,""MM/DD/YYYY""), IF('Database Pivot'!$B$1=""(Multiple Items)"", ""For Selected Dates"", ""On "" & TEXT('Database Pivot'!$B$1,""MM/DD/YYYY"")))" Set objChart = Charts.Add With objChart .HasTitle = True .ChartTitle.Characters.Text = "=""Average WC Adherence "" & 'SA'!$Z$1" .ChartType = xlColumnClustered .Location xlLocationAsNewSheet, Name:="Adherence Chart" .PlotBy = xlColumns .SetSourceData objPivRange With .Axes(xlValue, xlPrimary) .HasTitle = True .AxisTitle.Characters.Text = "% Adherence" End With With .Axes(xlCategory, xlPrimary) .HasTitle = True .AxisTitle.Characters.Text = "Work Center" .TickLabels.Orientation = 90 .TickLabels.Font.Size = 7.5 End With End With 

我不知道为什么,但似乎某些公式和运算符不能用在dynamicChart表的公式中。 我们知道一个公式中的简单的单元格参考将起作用,如"='SA'!$Z$1"

因此,最好的select是在另一个单元格中创builddynamic图表标题,然后让图表标题中的公式引用包含dynamic图表标题的单个单元格。 在您设置单元格Z1公式的行的下方,添加以下行

 ' I use Z2, use whatever cell you see fit Sheets("SA").Range("Z2") = "Average WC Adherence " & Sheets("SA").Range("Z1") 

然后更新图表标题公式以引用单元格

 .ChartTitle.Caption = "='SA'!$Z$2" 

注意到我也改变了.Characters.Text.Caption ,因为Caption属性可以检测它是否应该包含文本或公式