在数据透视图中为单个图表值创建永久趋势线

Creating a permanente trendline in Pivot Chart for a single chart value

我正在尝试仅为数据透视图上的一个图表值创建永久趋势线。我已经为此编写了一个宏,但我的 for 循环中的 if-else 语句似乎被忽略了。

这是我在 Moduel1 中的代码:

Sub AddTrendLine()
Dim mySeriesCol As SeriesCollection

Set mySeriesCol = ActiveSheet.ChartObjects.Chart.SeriesCollection

For i = 1 To mySeriesCol.Count
    If mySeriesCol(i).Name <> "Actual" & mySeriesCol(i).Trendlines.Count > 0 Then
        mySeriesCol(i).Trendlines.Delete
    ElseIf mySeriesCol(i).Name = "Actual" & mySeriesCol(i).Trendlines.Count = 0 Then
        mySeriesCol(i).Trendlines.Add
End If
Next
End Sub

这是我在 Sheet2 中的代码:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Call AddTrendLine
End Sub

这是我得到的:

这是我想看的:

如有任何建议,我们将不胜感激。

& forces string concatenation and is not a logical operator; And是.

目前正在对 mySeriesCol(i).Trendlines.Count > 0 求值,结果 (True/False) 正在 & 连接 到文本 "Actual".

因此您当前的代码等同于

If mySeriesCol(i).Name <> "ActualFalse" '<~ or "ActualTrue" 

使用And.

编辑:

同样有问题:Set mySeriesCol = ActiveSheet.ChartObjects.Chart.SeriesCollection.

您想使用特定的 ChartObject

Sheet1.ChartObjects("your chart name").Chart.SeriesCollection

Sheet1.ChartObjects(1).Chart.SeriesCollection

编辑 2:

没有Trendlines.Delete方法;这是 Trendline.Delete:

mySeriesCol(i).Trendlines(1).Delete

我想通了。这是我的最终解决方案:

模块:

Sub AddTrendLine()
Dim mySeriesCol As SeriesCollection

Set mySeriesCol = Sheet2.ChartObjects(1).Chart.SeriesCollection

For i = 1 To mySeriesCol.Count
    If mySeriesCol(i).Name <> "Actual" And mySeriesCol(i).Trendlines.Count > 0 Then
    mySeriesCol(i).Trendlines(1).Delete
ElseIf mySeriesCol(i).Name = "Actual" And mySeriesCol(i).Trendlines.Count = 0 Then
    mySeriesCol(i).Trendlines.Add
ElseIf mySeriesCol(i).Name = "Actual" And mySeriesCol(i).Trendlines.Count > 1 Then
    mySeriesCol(i).Trendlines(1).Delete
End If
Next
End Sub

工作表 2:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Call AddTrendLine
End Sub