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

时间:2015-07-30 17:31:51

标签: excel vba excel-vba

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

我无法在.charttitle.characters.text格式中键入公式,并在数据透视表中选择新过滤器时自动更新。

这是我的代码。正如您所看到的,我正在尝试将图表标题与基于数据透视表格的基于单元格的单元格相关联。如果有更简单的方法来编码,请告诉我。

数据透视表过滤器位于工作表("数据库数据透视表")。范​​围(" 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

1 个答案:

答案 0 :(得分:1)

我不知道为什么,但似乎某些公式和运算符不能用于动态图表的公式中。我们知道公式中的单个单元格引用会起作用,例如"='SA'!$Z$1"

因此,您最好的选择是在另一个单元格中创建动态图表标题,然后让图表标题中的公式引用包含动态图表标题的单个单元格。在您设置单元格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属性可以检测它是否应包含文本或公式

相关问题